工学部生の生プレス

*就職して元工学部生になりました

専門内容 日常

エクセルマクロで毎日のデータを月データへ自動的に出力

投稿日:

こんばんは。

社会人にもなったので、少しエクセルマクロの勉強もしなくては!と思い、ちょっとお試しでvba(Visual Basic for Applications)を用いてエクセルマクロ(Excelマクロ)を作ってみました。

この記事を見てる方の中には「vbaとは何?」や「エクセルマクロ(Excelマクロ)とは何?」という方も大勢いらっしゃると思いますが、その辺りの説明についてはこの記事では省略させて頂いています🙇その辺りについては他にわかりやすく説明して下さっている方々のサイトが多くありましたので、そちらを参考にされるかといいかと思います。

作るのは「品名・単価・枚数・合計の毎日のデータを月データへ自動的に出力するエクセルマクロ」です。

*完成イメージはこんな感じです↓

・タブ1【Date(日データ)】

・タブ2【Month(月データ)】

・タブ3【日付一覧】

*一応、作成したExcelマクロのファイルも共有いたします↓

作成したExcelマクロ

それでは~

シュワッチ!


 

①プログラム:

Option Explicit
'vbaTestと名付けた「実行ボタン」が押されるとプログラムスタートします'
Sub vbaTest()
'「実行ボタン」が押されるとメッセージボックスに「入力完了!」と表示させます'
MsgBox "入力完了!"
'シート設定'
Dim ws0 As Worksheet, ws1 As Worksheet
Set ws0 = Worksheets("Date")
Set ws1 = Worksheets("Month")
'Dateシート用プログラム'
Dim cmax0 As Date, cmax1 As Long, cmax2 As Long, cmax3 As Long, cmax4 As Long, cmax5 As Long
cmax0 = ws0.Cells(1, 1).Value
cmax1 = ws0.Cells(2, 5).Value
cmax2 = ws0.Cells(3, 5).Value
cmax3 = ws0.Cells(4, 5).Value
cmax4 = ws0.Cells(5, 5).Value
cmax5 = ws0.Cells(6, 5).Value
'Monthシート用プログラム'
'行の自動追加が上手く行くようにif文を多用しています'
Dim i As Long, k As Long
For i = 3 To 367
If IsEmpty(ws1.Cells(i, 1).Value) Then
ws1.Cells(i, 1).Value = cmax0
End If
If IsEmpty(ws1.Cells(i, 2).Value) Then
ws1.Cells(i, 2).Value = cmax1
End If
If IsEmpty(ws1.Cells(i, 3).Value) Then
ws1.Cells(i, 3).Value = cmax2
End If
If IsEmpty(ws1.Cells(i, 4).Value) Then
ws1.Cells(i, 4).Value = cmax3
End If
If IsEmpty(ws1.Cells(i, 5).Value) Then
ws1.Cells(i, 5).Value = cmax4
End If
If IsEmpty(ws1.Cells(i, 6).Value) Then
ws1.Cells(i, 6).Value = cmax5
ws1.Cells(2, 2).Value = ws1.Cells(2, 2).Value + ws1.Cells(i, 2).Value
ws1.Cells(2, 3).Value = ws1.Cells(2, 3).Value + ws1.Cells(i, 3).Value
ws1.Cells(2, 4).Value = ws1.Cells(2, 4).Value + ws1.Cells(i, 4).Value
ws1.Cells(2, 5).Value = ws1.Cells(2, 5).Value + ws1.Cells(i, 5).Value
ws1.Cells(2, 6).Value = ws1.Cells(2, 6).Value + ws1.Cells(i, 6).Value
Exit For
End If
Next i
End Sub

②ポイント:

“Monthシート用プログラム”の所で、行の自動追加が上手くいく様に少し工夫しています。とはいっても大したことはしていなくて、しているのは「その行が空であったら行を追加する」というチェックだけです。

このチェックをしていないと同じ行に上書きされる形になってしまうので、気を付けてください。


 

以上で今回の「エクセルマクロで毎日のデータを月データへ自動的に出力」を終わります。おかしい部分を見つけたり、読んでも作り方がよくわからなかった際は気軽にコメント頂けると嬉しいです!

また、エクセルマクロを作る機会があれば、記事を作成したいと思います。

▲▲▲アリガ島▲▲▲

次回予告
「未定」







-専門内容, 日常

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

This site uses Akismet to reduce spam. Learn how your comment data is processed.

関連記事

アナログローパス・フィルタとデジタルローパス・フィルタの比較

こんばんは。 今回は“アナログローパス・フィルタとデジタルローパス・フィルタの比較”ということで、回路で作ったアナログローパス・フィルタとプログラムで作ったデジタルローパス・フィルタの性能を比較してみ …

温度センサを使った効率のいい小型扇風機

こんばんは。 12月になりましたね♪ 「12月といったら、クリスマス♪」 クリスマスのイベントにはめっきり縁が無い僕ですが、クリスマスソングが大好きなので、街を歩いているとクリスマスソングが聞こえてく …

7セグメントLEDを使った自作スコアボード

こんばんは。 今回はarduinoをマイコンに使って、“7セグメントLEDを使った自作電光スコアボード”を作っていきたいと思います!       …

秋月版L6470使用ステッピングモータードライバの使い方

こんばんは。 最近は「5月ってこんなに暑かったけ~☀」って思っています。なんか、梅雨明けぐらいから暑くなるイメージじゃなかったですか? ちなみに、最近観たアニメは“SHIROBAKO”と …

大学生vs風邪!

こんばんは。 久しぶりの投稿になりました。m(__)m なんで、1週間くらい空いてしまったかというと・・・ 風邪をひいていました。 少し、気温が寒くなって「マズいな~。」と思っていた時の出来事でした。 …

S