配列で入出金データの残高を取得

  実務では、下図のように入出金データがずらり並べて、残念なから残高がないものがあったりします。今日は、配列で残高を高速取得方法を見て行きましょう。

 

 

 

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」に変えれば良いです。ぜひ、上のコードを使って、ご自分でも実行してみてください。

 

 

関連記事