エロい話?…そんなことより、ビジネストークだ!(真面目人間)
その昔は「真面目が服を着ている」といわれるほど、「外見」は割と良かった人間なわけですが、先日は、会計の金額を合わせるのに、Excelマクロであぁでもない、こうでもないと言いながら、アレコレと試算をしまくっていました…。
何十回でも試算ができちゃう!
Excelマクロを使う強みとしては、手作業だと膨大な時間がかかるような試算であったとしても、わずかな時間で試算・再計算が行えることです。
特に計算ルールが同じで、利用する数値に違いがある場合なんかは、あっちを集計、こっちで集計という操作を手軽にできるんですよね。…まぁ、マクロを作る際に、「そういう計算」ができるような作りにしておく必要は当然ながらあるわけですが。
とにかくテンプレ化!話はそれから!
短時間でマクロを作ろうと思った場合、常に意識しておきたいのが、「テンプレート化」してしまうということです。
Sub test()
Dim i As Long
For i = 2 To Cells(1, 1).End(xlDown).Row
If Cells(i, 1) > 10 Then
Debug.Print Cells(i, 1)
End If
Next
End Sub
例えばこんな感じのコードですね。
マクロを使う場合、絶対的に使う機能としては、繰り返い処理と分岐処理です。この辺を、何となく理解できているなら、マクロ作成者としてはほぼほぼ完成されているので、あとは数をこなすだけでいくらでも複雑なマクロを作ることができます。
私はというと、「マクロが必要だなぁ…」と思ったときには、上記の構文は「とりあえず打つ」っていう感覚でテンプレート化していますね。特に、「Debug.Print」については、実際に稼働させる前にはなるべく入れるようにしています。…入れないにしても、元データに対して、いきなり変更が必要になるようなマクロは作らないようにしていますね…
マクロで作ったものは戻せない!
「元に戻す」はめちゃくちゃ便利です。操作のミスから入力ミス、「やっぱや~めた!」まで幅広く対応してくれます、指は自然とCtrl+Zを何度もたたくことになるわけです。…が、マクロを使って数値操作などを行った場合、「元に戻す」は一切機能しません。そのため、上記の通り、元データをいじるようなマクロを作る場合は、「戻せる内容」もしくは、「別シートに丸ごとコピーしてから」のどちらかで行うようにしています。…データ抽出して集計みたいなことをする場合は、別のシートで集計するようにしています。…元データは崩しちゃダメ、絶対!
シートは全部変数
まぁ、複数シートを扱う場合ということですが、シートも変数化しちゃうと扱いやすいです。慣れに応じて、この辺を導入すればいいんですけど、なるべく早めに導入することをお勧めします。…遅かれ早かれ、シートを跨ぐマクロを作ることになるわけですし、シート間のやり取りを考えると…ね?
今日のExcelマクロのよもやま話はここまで!
次回の登場をお楽しみに!(割とおんなじことばかり書きそうですけど…)