エクセルの長所
更新 2021/05/23(日)
文責 炭本 治之
■エクセルの長所
(1)エクセルは「表形式のデータ」を記録できる
毎月の勤務表は,エクセルで作って提出するのが一般的でしょう。
他に,見積書,請求書,注文書,学校の先生が作るテスト結果一覧などもエクセルで
作成するのが最も楽です。
経過時間,小計,全体合計なども簡単に表示させることができます。
並べ替え,フィルターをかけての表示も簡単です。
(2)VBAマクロの機能が豊富
表計算だけなら,OpenOfficeなど,無料で利用できる表計算ソフトがあります。
しかし,それらのソフトでは,エクセルのVBAマクロに匹敵する機能がありません。
他の表計算は,マクロの機能が貧弱なために,エクセルに比べると使える範囲が大幅に
限定されてしまいます。
■エクセルを使って販売管理をする例
下のエクセルファイルは,販売管理のファイルの例です。
「販売テーブル」の行番号2のレコードは,次の情報を示します。
2021/04/02の1番目に売れた商品は,商品コード00001の商品で,それが2個売れた
商品コード00001の商品は,下の「商品マスタ」に記録されています。
「マスク20枚入り」で単価は800円とあります。
■VBAマクロでプログラムを作る例
さて,このエクセルファイルのデータから,次のプログラムを作成してみます。
「利用者が年月を指定すると,その年月の販売金額合計を計算して表示」するプログラム
Public Sub CalcMonthlySum()
'概要:指定年月の販売金額合計を表示
Dim strYM As String
strYM = InputBox("年月を指定してください。", "年月指定", "2021/04", 100, 50)
Dim i As Long
Dim ProdCD As String
Dim Cnt As Long
Dim SumRec As Long
Dim SumTotal As Long
i = 2
SumTotal = 0
Do
If ThisWorkbook.Sheets(1).Cells(i, 1) = "" Then 'レコードがない場合
Exit Do '処理を抜ける
End If
ProdCD = ThisWorkbook.Sheets(1).Cells(i, 3) '商品コード
Cnt = ThisWorkbook.Sheets(1).Cells(i, 4) '数
SumRec = GetSum(ProdCD, Cnt)
SumTotal = SumTotal + SumRec
i = i + 1
Loop
MsgBox strYM & "の販売金額合計=" & CStr(SumTotal)
End Sub
Private Function GetSum(pProdCD As String, pCnt As Long) As Long
'概要:商品マスタを参照して,商品コードと数から販売金額を計算して返す
Dim i As Long
i = 2
Do
If ThisWorkbook.Sheets(2).Cells(i, 1) = "" Then 'レコードがない場合
Exit Do '処理を抜ける
End If
If ThisWorkbook.Sheets(2).Cells(i, 1) = pProdCD Then
GetSum = CLng(ThisWorkbook.Sheets(2).Cells(i, 5)) * pCnt
Exit Function
End If
i = i + 1
Loop
MsgBox "商品マスタにないコードが使われています:" & pProdCD
End Function
メニューバーでツール,マクロを選択し,上のCalcMonthlySumをクリックすると,
ダイアログが表示されます。
ダイアログで2021/04を入力すると,別のダイアログで2021/04の合計販売額が表示されます。
上の関数の金額合計をする部分は,
CalcMonthlySumでは,Dim i As Longの行から,MsgBoxの行まで
GetSumでは,この関数全体
で,合計計算だけでだいたい30行くらいのソースコードになっています。(空白行は除く)
他にも,
どの曜日が最も販売金額が大きいか,
どの商品が最も販売金額が多いか,
など,いろいろな計算をマクロで作成できます。
(終わり) ページの先頭へ
|