Excelマクロを書くのに、小さく試してみるというのがおすすめです。
オートフィルターの事例でまとめてみました。
最初の一歩目を体験する
Excelマクロでできることは
- 処理の自動化。
- 処理時間の短縮
といったものがあります。
とはいえ、いきなりできるわけではありません。書けないと始まらないからです。
そこで最初の1歩目を踏み出すことが大事です。
マクロを使って、セルに数字を表示してみましょう。
マクロの設定はこちらを。
Excel VBA超入門 マクロを書いてみたい人集合! 仕事ときどきアウトプットがおすすめ | GO for IT 〜 税理士 植村 豪 Official Blog
Excelの画面を表示した状態で、Alt+F11をクリックし、
VBEの画面を表示。Sub 題名(任意。ここではnumber)と入力すると、End Subが自動表示されます。その間に「Range(”C5”).value=1」と入力し、F5キーを押して実行してみましょう。
1 |
Range(”C5”).value=1 |
すると、C5セルに1が表示されます。(セルC5の値は1です。という意味です。)
この書き方でセルに値や文字を表示させることができます。ただし、Rangeを使う場合、指定するセルを「””」で囲うというのがルールです。
文字を表示させたいならば、「””」を囲う必要があります。続けて、D8セルにVBAという文字を表示する場合には”VBA”とします。
1 |
Range(”C5”).value=”VBA” |
すると、VBAの文字がセルD8に表示されます。
Rangeではなく、Cellsを使うこともできます。
たとえば、D3セルに100を表示したい場合には、「Cells(3,4)=100」とすると、
1 |
Cells(3,4)=100 |
すると、D3セルに100が入力されます。列と行の指定を逆にするところ、Dを4と数字にするところがRangeの場合と違います。
-
- Rangeを使うなら「Range(”D3”).value=100」
- Cellsを使うなら、「Cells(3,4)=100」
どちらも同じ答えになります。どちらを使うかは好みです。
C5セルに表示した数式や値をクリアしたい場合には、「Range(“C5”).ClearContents」とすると、C5セルに表示されていた値は消えます。
1 |
Range("C5").ClearContents |
C5セルの値は消えました。
効率化には、このような小さな一歩目を体験してみることが欠かせません。
Excelマクロでオートフィルター
Excelマクロをつかってオートフィルターでデータを抽出することができます。
こういったデータに
オートフィルタを設定するなら、「Range(”A1”).Autofilter」とし、「F5」キーで実行すれば、
1 |
Range(”A1”).Autofilter |
オートフィルタを設定できます。
Excelでテーブルにすれば、自動的にオートフィルター設定はされるわけですが、自動で処理したいということであれば、マクロで書くことになります。
Excelの「テーブル」は超スグレモノ 見やすさ、使いやすさ100点の表に一瞬で変わる! | GO for IT 〜 税理士 植村 豪 Official Blog
マクロでオートフィルターでデータを抽出する場合には、こういう感じになります。
1 |
Range(”A1”).Autofilter field:=3,criteria1:="カメラ" |
[field]で列の指定(ここでは範囲の3列目で抽出したいので「3」)、[Criteria1]は抽出条件の値(カメラ)を設定します。「カメラ」の部分はセルの値でも大丈夫です。
F値(絞り)でカメラになっているものだけを抽出できました。
そのオートフィルターで項目で集計したものを、別の新規シートに貼り付けて、
ファイル保存というようなこともできます。「F8」キーを押して1行ずつ動きを確かめてみるのもいいかと。
これでオートフィルターで抽出したデータを別ファイルで保存できます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
Option Explicit Sub camera() '■カメラでオートフィルター Worksheets("data").Range("C1").AutoFilter Field:=3, Criteria1:="カメラ" '■抽出データをコピー Worksheets("data").Range("A1").CurrentRegion.Copy '■シートを追加 Workbooks.Add '■コピーしたデータを値複写 Range("A1").PasteSpecial Paste:=xlPasteValues '■data.csvという名称で、ファイルを保存 Application.DisplayAlerts = False ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\data.csv", _ FileFormat:=xlCSV, local:=False ActiveWorkbook.Close Application.DisplayAlerts = True 'オートフィルター解除 Workbooks("カメラ撮影モード.xlsm").Worksheets("data").Range("A1").AutoFilter End Sub |
上手く行けば、ファイルができているはずです。
小さく体験してみることから
プログラミングを使えば、処理を自動化できたり、処理時間を短縮することができるわけですが、なかなか敷居が高いのも事実です。
何からやればいいかわからないということもあるでしょう。
どんなことができるかがわかれば、それを仕事に活かせるアイデアが浮かぶ可能性もでてきます。
ただ、やってみないことにはその引っ掛かりはないでしょう。
だからこそ、まずは小さくても体験してみることがおすすめです。
マクロを書いて効率化するなら、こうしたことを手を動かしつつ、「F5」や「F8」を押して実行してみてエラーが出たら、調べて書いて覚えていくというアウトプットをしていくのがいいと実感しています。
Excelマクロにご興味がある方は、今回の記事を同じようにやってみていただければ。
今回使ったファイルはコチラにあります。
【編集後記】
昨日は歯医者へ。その後は税理士業を。先日買った照明がAmazonタイムセールで2,000円ほど安くなっていたので、てもとにあるものは返品することに。2日前は定価だったのにタイミング悪く。でも、気づけたからま、いいかとも。
【昨日の1日1新】
※「1日1新」→詳細はコチラ
BoYata ノートパソコン スタンド