配列で入出金データの残高を取得
実務では、下図のように入出金データがずらり並べて、残念なから残高がないものがあったりします。今日は、配列で残高を高速取得方法を見て行きましょう。
Sub test()
' 配列で残高計算
Dim myFlag(1 To 2)
myFlag(1) = 1
myFlag(2) = -1
Dim Balance As Long
Dim i As Long
For i = 2 To 12
Balance = Balance + Cells(i, 4).Value * myFlag(Cells(i, 2).Value)
Next i
' 計算結果をD13に表示
Cells(13, 4).Value = Balance
End Sub
実行結果
入出金の計算結果がセルD13に表示されました。どころが、行ごとの残高が表示されていません。
行ごとの残高を見たい時は、test2のように、Cells(i, 5) = Balance をループに入れれば、勝手にE列表示されます。
Sub test2()
' 1行ずつ残高を計算
Dim myFlag(1 To 2)
myFlag(1) = 1
myFlag(2) = -1
Dim Balance As Long
Dim i As Long
For i = 2 To 12
Balance = Balance + Cells(i, 4).Value * myFlag(Cells(i, 2).Value)
Cells(i, 5) = Balance '計算結果をE列に表示
Next i
End Sub
実行結果
また、上の例では、12行までのデータですが、実際データ大量にある場合、最終行を自動取得にしたほうがより楽になるのでしょう。その場合、「For i = 2 To 12 」の12 を「Cells(Rows.Count, 1).End(xlUp).Row 」に変えれば良いです。ぜひ、上のコードを使って、ご自分でも実行してみてください。
関連記事