2017-05-07 11 views
0

K2から最後のセルまでを列 "K"で3行おきに合計しようとしています。列「K」で使用されるデータまたはセルは変化することに注意してください。列マクロ内のすべての3行目を追加する

最後の行まで3行おきに値を合計し、合計を「M1」に表示するにはマクロが必要です。

いくつかのサンプル値のスナップショットを添付し、最終結果をどのように見せたいかを付けました。

enter image description here

+0

Whあなたはこれまでに試したことがありますか? – YowE3K

+0

これも数式で行うことができます。 –

+0

私は単純に値を合計するコードを持っています。私はMOD式を使用しようとしましたが、失敗しました。 サブMacro2では() 「 」Macro2ではマクロ 「 」 薄暗いLASTROW限り 範囲(「M1」)値=適用:ここで私は現在の列「K」の和を持っているコードであります.Sum(範囲( "K2:K"&ラストロー)) 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 
関連する問題