2013-03-02 18 views
1

如何在vba中的sum函數中使用lastRow變量?在計算每行中單詞的數量直到最後一行之後,我想將每行中的單個總計加在總體列中,但我不想將範圍硬編碼到vba中的總和函數中?有另一種方法嗎?SUM函數在VBA中 - 沒有硬編碼的行和列

例子:

Column: A B C D E F 
NRow 1: 2 3 4 5 6 7 
NRow 2: 3 4 5 6 7 8 
Total 3: 5 7 9 11 13 15 

想要避免SUM(R[-2]C:R[-1]C)?我想要SUM(R[lastRow]C:R[-1]C)或者其他功能相同的東西。

謝謝!

回答

0

如果你能保證始終有column A數據,那麼找到最後一排,你可以做到以下幾點:

Option Explicit 

Sub addSums() 

Dim lstRow As Integer 
With Excel.ThisWorkbook.Sheets("Sheet1") 

    lstRow = .Cells(.Rows.Count, 1).End(Excel.xlUp).Row 

    Dim j As Integer 
    For j = 1 To .Cells(1, .Columns.Count).End(Excel.xlToLeft).Column 
     .Cells(lstRow + 1, j) = "=SUM(R[-" & lstRow - 1 & "]C:R[-1]C)" 
     .Cells(lstRow + 1, j).Font.Bold = True 
    Next j 

End With 

End Sub 

似乎工作就OK了以下:

enter image description here

-1

如果源數據即將FRM外部源,適當的機制是:

  • 周圍的輸入表創建一個名爲Data的範圍;
  • 將inut表設置爲在刷新時自動調整大小;和
  • 然後在你的函數中使用命名數據範圍。
1

像這樣其

  1. 設置在有源片的usedrange從A1到最後使用的細胞在柱F
  2. 轉到低於該範圍Cells(rng1.Cells(1).Row + rng1.Rows.Count, 1)第一小區,調整大小,以該量(在這種情況下爲6列)
  3. 進入論壇庫"=SUM(R[-" & rng1.Rows.Count & "]C:R[-1]C)"其中rng1.Rows.Count動態給出第一行

代碼

Sub GetRange() 
Dim rng1 As Range 
Set rng1 = Range([a1], Cells(Rows.Count, "F").End(xlUp)) 
Cells(rng1.Cells(1).Row + rng1.Rows.Count, 1).Resize(1, rng1.Columns.Count).Value = "=SUM(R[-" & rng1.Rows.Count & "]C:R[-1]C)" 
End Sub