【エクセルマクロ】 条件一致する隣のセルを合計:コピペで使えるコード

エクセルマクロ 条件一致する隣のセルの合計 アイキャッチ エクセルマクロで効率化する

エクセルマクロで、条件一致する隣のセルを合計するVBAコードをご紹介します。

このページのマクロコードは、コピペで使えます。
せひ、お試しください。

条件一致する隣のセルを合計

以下のマクロを実行すると、条件一致する隣のセルを合計します。

Sub 条件一致する隣のセルの合計()

Dim i As Long
Dim Cnt As Long
Dim LastRow As Long

    '最終行を取得
    LastRow = Cells(Rows.Count, 1).End(xlUp).Row
    
    Cnt = 0

    '2行目から最終行までループ
    For i = 2 To LastRow
            
        'C列が○だったら
        If Cells(i, 3) = "○" Then
        
            'B列の数字を加算
            Cnt = Cnt + Cells(i, 2)
        
        End If
    Next i

    '合計入力
    Cells(LastRow, 2) = Cnt

End Sub

 

マクロ実行後

Bに数字を入力します。

C列に条件となる「○」を入力します。

C列に「○」が有る隣の数値(B列)の合計を計算し、B列の最終行に入力します。


 
 

条件一致する隣のセルを合計(配列使用)

以下のマクロを実行すると、2次元配列を使って条件一致する隣のセルを合計します。

Sub 条件一致する隣のセルの合計()

Dim MyList As Variant
Dim i As Long
Dim Cnt As Long
Dim LastRow As Long

   Cnt = 0
    
   '最終行を取得
   LastRow = Cells(Rows.Count, 1).End(xlUp).Row
    
   'B列~C列のデータを配列へ格納
   MyList = Range("B1", Range("C" & Rows.Count).End(xlUp)).Resize(, 2).Value
    
   '配列をループ
   For i = 2 To UBound(MyList)
        
       'C列が○だったら
       If MyList(i, 2) = "○" Then
        
           'B列の数値を加算
           Cnt = Cnt + MyList(i, 1)
       End If
   Next i
    
   '合計入力
   Cells(LastRow, 2) = Cnt

End Sub

 

マクロ実行後

ウォッチウィンドウを見ると、B列とC列の値が配列に格納されていることがわかります。

MyList(i, 2) が ○ の場合、MyList(i, 1) の数字を変数 [Cnt] に加算します。


 

【エクセルマクロ】 隣のセルと同じ値に色付け:コピペで使えるコード
エクセルマクロで、隣のセルと同じ値に色付けするVBAコードをご紹介します。 このページのマクロコー...