複数の項目に該当する物の合計を出したいときがあります。そんなときに使えるVBAを作りました。
目次
完成イメージ
リストにしている検索ワードのそれぞれの合計値を入力する。


VBAコード
Sub 条件にあう数字の合計()
Dim m As Long
Dim arr(100) As Long
Dim k As Long
For k = 4 To 7
Set 戻り値 = Range("B:B").Find(Cells(2, k).Value)
場所 = 戻り値.Address
m = 0
'配列に値を割り当てる→合計をTotalに代入する
Do Until 戻り値 Is Nothing 'Do Until~Loopステートメントは、セルがNothingになるまで検索を繰り返す
arr(m) = Range(戻り値.Address, 戻り値.Address).Offset(0, 1).Value
Total = Total + arr(m)
m = m + 1
Set 戻り値 = Range("B:B").FindNext(戻り値)
If 場所 = 戻り値.Address Then '場所と戻り値が同じ値になるまで続ける(=最初に戻ってきたら終了)
Exit Do
End If
Loop
Cells(3, k).Value = Total
Total = 0
Next k
End Sub
- FindNextを使って文字を探す。
- Offsetでその文字の横にある数字を指示。
- 数字を配列に記憶させる。
- 配列に記憶した値の合計をだす。
- 上記のことを繰り返し処理(For Next)する。
コメント