みなさんはプログラミングと聞いて何を思い浮かべますか?私が思い浮かべるプログラミングとは日常生活で生じる雑多な業務を効率化してくれるものだと考えています。ここで日常生活で生じる雑多な業務とは、例えば以下のようなものが挙げられるかと思います。
- 帳票等のエクセルデータ処理
- ウェブサイトからのデータ収集
- ゴミ当番のリマインド
これらはどれも繰り返し作業というものが含まれる業務です。この繰り返しの部分を自動で行わせることにより業務の効率化が図れます。そこで今回は誰もが使うことがあるエクセルを用いて業務効率化の一例をご紹介していきます。
なお、プログラミングでできることについてはこちらで紹介しているのでぜひ見てみてください。
エクセルをはじめとしたマイクロソフトのソフトウェア(ワードやパワーポイント等)ではVBAという機能を利用することができます。VBAとはVisual Basic for Applicationsのことで一種のプログラミング言語です。これを使うことにより繰り返しの雑多処理やエクセルとパワーポイントの連携処理などを行うことができます。
この機能を初めて使う場合は最初に少し設定をする必要があります。先ずエクセルを開いてファイルのオプションからリボンのユーザー設定のところから右側のメインタブ一覧の中の開発というところにチェックを入れてください。
すると以下のようにエクセルのリボンに開発というタブが追加されたと思います。
これで準備が整いました。ちなみに一度開発タブを追加すればそれ以降は自動的に開発タブが現れるようになるため、最初だけ設定すれば大丈夫です。
日本では月に100時間を超える残業をさせられた場合、労働基準法違反に該当します。そこで全社員の月の残業時間が100時間を超えているかどうかチェックするという雑務を考えてみましょう。もしVBAを使わないと1つずつチェックしていって超えていたら〇、超えていなかったら✕とエクセルに打ち込んでいかないといけません。しかもこの作業を毎月やると考えたら途方もない雑務時間ですよね。そこでこれをVBAで解決していきたいと思います。
先ず、与えられるデータとしては以下のような社員のNo.と残業時間です。そして横の列に〇か✕を入力していきたいと思います。
社員 | 残業時間 | 〇 or ✕ |
1 | 69 | |
2 | 10 | |
3 | 49 | |
4 | 147 | |
5 | 23 | |
6 | 197 | |
7 | 30 | |
8 | 20 | |
9 | 191 | |
10 | 54 |
それでは上のデータに対してプログラミングをしていきたいと思います。先ず開発タブを開いてVisual Basicというところをクリックすると次のような画面が出てくると思います。
この画面が現れたら挿入タブのところから標準モジュールというものを選択します。するとGeneralと書かれたボックスが出ると思います。このボックスにプログラミングをしていくのですが、今回のプログラムに名前を付与して一つの機能として登録する必要があります。それは挿入タブのプロシージャの追加からできます。今回は残業時間のチェックを行うのでcheckという名前にします。名前を決めたらOKをクリックしてください。ここから実際に残業時間のチェックを行うプログラミングをしていきます。具体的な流れは以下のようになります。
- 変数の用意
- エクセルセルのB2からB11までの残業時間の判定
- 判定した結果をセルのC2からC11に出力
それでは実際に1~3の処理を書いていきましょう。
先ず変数を用意するには以下のように書きます。
Dim i As Integer
ここでDimとはDimensionの意味でこれから何か変数を定義しますよということを示しています。そしてIntegerというのは変数の型のことでこれから宣言する変数はこのint型(9~10桁までの整数)だということを示しています。なお、今回はセルの行番号を表すiという変数を用意しました。次にB2~B11までの残業時間を判定するコードを書いていきます。
For i = 2 To 11
-処理-
Next
先ず、B2~B11までに対して処理を行わないといけないのでFor文という繰り返し処理を行うプログラムを書いていきます。書き方はForの後に先ほど宣言した変数iを書き、そのあとにどこからどこまでという範囲を書きます。ここではB2からB11までなので2 to 11としています。そしてその中に処理を書いていくのですが最後にNextというステートメントを書かないとエラーが起きるので忘れずに書いておきましょう。
If Cells(i, 2) > 100 Then
Cells(i, 3) = "×"
Else
Cells(i, 3) = "〇"
End If
続いてセルのデータへのアクセスの部分ですが、例えばA1を表したい時はCells(1, 1)という風に書きます。したがって、このFor文内ではCells(i, 2)というのがB2からB11を指しています。そしてこれが100を越えたらという条件式(If 条件式 Then)のあとに処理を書いていきます。また、100を越えない場合はそれ以外という意味のElseを書いてそのあとに〇を出力するという処理を書いています。なお、条件式もFor文と一緒で最後にEnd Ifというステートメントを追加しないといけません。
この条件処理をFor文内の’処理’のところに差し込めば完成です。以下が全体のコードです。
Public Sub check()
Dim i As Integer
For i = 2 To 11
If Cells(i, 2) > 100 Then
Cells(i, 3) = "×"
Else
Cells(i, 3) = "〇"
End If
Next
End Sub
実際にこのコードを実行するには緑色の三角ボタンもしくは実行タブをクリックしてSub/ユーザーフォームの実行というところをクリックします。するとエクセルシートのセルに〇か✕が出力されると思います。一応結果を載せておきます。
きちんと残業時間に対して〇か✕が出力されていることが確認できると思います。また、ちょっとコードを書き替えると残業時間を越えた社員が誰なのかということも出力できるのでお時間がある人はやってみてください。
また、今回はプログラミングの基本となるFor文やIf文を交えてVBAの醍醐味であるセル上での操作を行いましたが、他にも色んなことができるので気になった方はぜひ調べてみてください。
プログラミングは繰り返しの雑務などを効率化・自動化してくれる素晴らしいものだと考えています。一度覚えればそれを応用するだけで1つ1つ手作業でやるよりも短時間で処理を終わらせられるのでお勧めです。今回はエクセルという身近なツールでVBAを用いてプログラミングをしました。VBAは手軽に始められてかつ身近な作業を効率化できるのでプログラミングの意義をダイレクトに感じられるものではないかと筆者は考えています。今回のVBA紹介でプログラミングに興味をお持ちいただけたら幸いです。次回はPythonというプログラミング言語のお話を書こうと思います。
こちら株式会社足の筋肉痛が治らないです。ネットサーフィンをしていたところあなたのブログを見つけ、とても素晴らしいと思いメールさせて頂きました。いきなりなのですが、僕たちと一緒に大きなビジネスを始めませんか?世界もびっくり仰天するようなビジネスなのでお金持ちになること間違いなしです。前向きなお返事をお待ちしております。
なるほど。よほどすごいビジネスをお考えなのですね。
ぜひとも教えて頂きたいです。😢
P.S.
足の筋肉痛は治りましたか?