技能習得としてのExcelVBAについて
![img_2 img_2](./24_a12_019_2.png)
「自分にしかできない」というスキルは持っていないけど、今後、職場で役立ちたいと考える人は、エクセルで VBA を学んでみてはいかがでしょうか。
• この記事の対象者
「窓際おじさん」は、「働かないおじさん」や「何もやってない人」、「座ってるだけの人」などとも呼ばれますが、以下の4種類に大別することができると思います。
- スキルがあって、バイタリティもある。
- スキルがあって、バイタリティはない。
- スキルがなくて、バイタリティはある。
- スキルがなくて、バイタリティもない。
ここでいうバイタリティとは、「今の職場にとどまりたい」という意欲のことを指します。また、スキルとは、業務に役立つ、他の人には簡単に真似できない技能、知識、経験のことを指します。
この記事の対象者は、「スキルがなくて、バイタリティはある」人となります。
• 単純化した業務の例
たとえば、下図のようなエクセルデータがあったとします。
[ 画像1. エクセルデータ例 ]
B列には、2行目から6行目までアルファベットが入力されています。
ここで、B列の中から“D”という文字列を探して、その右のセルに”★”を記入するという作業があるとします。
その作業を行うVBAのコードを以下に示します。
Sub a()
For r = 2 To 5
 If Cells(r, 2) = "D" Then
Cells(r, 3) = "★"
 End If
Next r
End Sub
Sub a()を実行すると下図のように、"D" の右に "★" が記入されます。
[ 画像2. コード実行結果 ]
何が便利か
上記の業務における作業は、「B列の2行目から6行目を順番に見ていき、"D" があったら右のセルに "★" を記入する」という単純な作業です。
これだけなら、わざわざVBAを使うまでもなく、目視と手入力でやってしまった方が楽です。しかし、行数が増えて、たとえば1000行までになったとしたらどうでしょうか。そのような時は、やはりVBAでコードを書いた方が、目視と手入力よりは効率的です。
行数を1000行までに拡張したい場合、Forの部分を以下のように書き換えます。
実際の作業内容に応じてコードを書く必要がある
上記の作業内容は単純化したサンプルであって、実際に職場で行う作業内容は難しさも量もさまざまです。したがって、実際の作業内容に応じてコードを自分で書く(または、書き換える)必要があります。
まずは簡単なことから
とはいっても、いきなり複雑なコードを書く必要はありません。この記事で紹介したコードは極めて単純ですが、単純ゆえに理解が容易で、応用も利くのです。
まずは、簡単な単純作業を単純なコードで書いてみてはいかがでしょうか。
• まとめ
単純なエクセル作業を行うVBAのサンプルコードをご紹介しました。
生成AIが普及してきて、人間が行う "業務" のあり方が変化してきています。「生成AIにできることは生成AIにやらせる」というのが、今のビジネス界のトレンドとなっています。したがって、新たなスキルを習得し続けることが重要です。
人間の仕事が生成AIの仕事に置き換えられる中、役に立つスキルを習得することが求められています。スキル習得のテーマとして、VBAは適していると私は思います。