2017-05-07 206 views
0

我想從K2列開始到最後一個使用的單元格列「K」列中的第3行。請注意,列「K」中使用的數據或單元格會有所不同。在列宏中添加第3行VBA

我需要一個宏來總結每個第3行直到最後一行使用的值,並在「M1」中顯示Total。

我附加了一些示例值的快照以及我希望最終結果如何。

enter image description here

+0

Wh到目前爲止你有沒有試過? – YowE3K

+0

這也可以用公式完成。 –

+0

我只是簡單的代碼來總結這些值。我試圖使用MOD公式,但我一直沒有成功。這裏是我現在有用於柱 「K」 的總和的代碼: 子Macro2() ' ' Macro2宏 ' ' 昏暗LASTROW只要 範圍( 「M1」)值=應用。 .Sum(範圍(「K2:K」和Lastrow)) End Sub – Tom

回答

0

Howdee湯姆 - 這應該爲你做的伎倆。

Sub Sum_Every_Third() 
Dim sht As Worksheet 
Dim lastRow As Long, amount As Long 

Set sht = Worksheets("Sheet1") 'Be sure to change to your correct sheet name 

lastRow = sht.UsedRange.Rows(sht.UsedRange.Rows.Count).Row 

amount = 0 
For i = 2 To lastRow 
If Cells(i, 13).Offset(-1, 0).Row Mod 3 = 0 Then ' Make sure you change 13 to your column number 
    amount = amount + Cells(i, 13).Value 
End If 
Next i 

MsgBox amount 

End Sub 
+0

謝謝Wolfie和Clouse24都按需要工作!非常感謝傢伙! – Tom

1

短和緩慢(經測試並在Excel它只能作爲陣列式):

[M1] = [SUM(IF(MOD(ROW(K:K),3)=1,K:K))] 

或更長一點,通過限制範圍:

[M1] = Evaluate(Replace("SUM(K2:K9*(MOD(ROW(2:9),3)=1))", 9, [K1].End(xlDown).Row)) 
0

該子應實現你的總結,查看評論詳情

Sub dosum() 
    ' Get last row 
    Dim lastrow As Long 
    lastrow = ActiveSheet.UsedRange.Cells(ActiveSheet.UsedRange.Cells.Count).Row 
    ' Assign range object to data in column K 
    Dim myRange As Range 
    Set myRange = ActiveSheet.Range("K2:K" & lastrow) 
    ' Sum every third item 
    Dim i As Long 
    Dim mySum As Double 
    mySum = 0 
    ' Step through cells in range, 3 at a time 
    For i = 3 To myRange.Cells.Count Step 3 
     mySum = mySum + myRange.Cells(i).Value 
    Next I 
    ' Put in cell 
    ActiveSheet.Range("M1").Value = mySum 
End Sub