2017-05-07 201 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