見出し画像

【Sample Theme10】プログラミング

バックオフィスのための

Excel VBA からはじめるプログラミング入門


「GWのまとまった休みでプログラムを身につけたい!」
そんなことを思ったかたには必見の内容です!
今回は【Excel VBA】をつかってプログラミングの要点をご紹介していきます。

いきなり本格的なプログラミング言語を勉強して挫折する人は多いと思います。
理由は簡単。

使わないからです!

勉強はインプットと同時にアウトプットを繰り返し行わないと身につきません。
資格試験の勉強も、参考書テキストばかり読んで問題集を解かないと合格はできませんよね?
それとまったく同じことです。

でも、Excelなら実務で使うかたは多いのではないでしょうか?
「Excelで集めたデータを違うExcelにコピペしなおす作業」
とか、
「毎回、フォーマットが変わる計算式を手作業でなおす」
とか、

そんな苦行のような作業をExcelでされているかたは、ぜひこのnoteを読んで、Excel VBAの扉を開いてみてください。


1.Excel VBAのプログラムはどこに書けばいいの?

まずは入門のための扉を開くところからです。
Excelを開いたら「開発」タブの「コードの表示」を押します。

画像データ1

すると、こんな画面が開きます。
(Alt + F11でも開きます。)

画像データ2

この右側にプログラムを書きこんでいきます。

2.書き始めのルール

Excel VBAでプログラムを書くためには、最初にあることをしなければなりません。

画像データ3

まず、最初に「Sub」と書いて、つぎにプログラムにつける「名前」を書きます。
そして、「()」で閉じます。
最後に「End Sub」と書きます。
プログラムは、このなかに書きます。
では、さっそくプログラムを書いていきます。

3.実務でよく使う自動処理の【パターン】

最初のほうでもご紹介したとおり、プログラムは「繰り返し使わないとおぼえない」ものです。
そのため、まずは実務でよく使う【パターン】をご紹介していきます。
つまり、これさえできれば、あとは応用を繰り返すことでどんどんスキルアップが見込めるわけですね!

3-1.繰り返し処理

まずは繰り返し処理です。
繰り返し処理はどんな場面でも使います。
例えば、
 ・Aランクの取引先のデータだけを抽出したい
 ・一覧表から重複データを探したい
 ・Bさんの1か月の受注成績だけ集計したい
なんていうとき、これらはどれも今ある一覧表のなかから【特定の条件】にあてはまるデータを取り出すことになります。
つまり、【繰り返し確認するという処理を自動化する】ために必須なのです!
「そんなの、データベースでSQL書けば楽勝じゃね?」
という方は、そもそも見ていただかなくてけっこうです(笑)

まず、こちらの表をご覧ください。

画像データ4

この表の数字を合計するとき、どうやって処理しましょうか?
「Sum関数を使えば簡単」というのはナシです。

まずは次のように書いてみましょう。

画像データ5

書いたらプログラムを実行してください。
すると、セルB2に結果がでました。

画像データ6

正解ですね。
では、1行づつ解説していきます。

・For n = 1 To 10 Step 1

Forは繰り返し処理の書き出しの定型文です。
nに1から10までの数の間、1ずつ数字をプラスする、という意味です。
ここで「n」って何なの?と疑問に思うと思います。
nは【変数】です。
1から10までの数字をとりあえず入れるための【箱】のことです。
そのため、「haco」なんて書いても問題なく動きます。

・ num = num + n

「num」という変数に、前回までの「num」と「n」を足した数字を代入するという意味です。
例えば、1から6までの合計の計算が終わっていれば、「num」は21になっているはずです。
なので、num(21) + n(7) = num(28)となるわけですね。

・Next

Forとセットで、For と Next の間に書いたプログラムを繰り返します。

・Worksheets("Sheet1").Range("B1").Value = num

「Sheet1」という名前のワークシートのセル「B1」に入力する、という意味です。

さて、ここままでで繰り返し処理の内容が理解できたのではないでしょうか?
しかし、ここで勘のよい方はお気づきかもしれませんが、ここで書いたプログラムはA列の数字を使っていませんね。

では、次のコードを見てください。

画像データ7

画像データ8

さきほど書いたプログラムと見くらべてみましょう。
ちがいは変数「n」を書いた場所です。
上のプログラムは、「Sheet1」という名前のシートのセル「A列」の「n行目」に入力された数字を取り出すという意味です。

変数「n」は1から10まで繰り返しますから、1行目から10行目まで繰り返しセルの数字を取り出すという処理をしていることがわかりますね。

ここまでいかがでしたでしょうか?
ぜんぜん簡単な気がしませんか?
やりかたさえわかってしまえば、あとは繰り返しと応用です。
実務のなかで「この処理、繰り返し処理で応用できないかな?」と疑問に思ったら成長のチャンスです!
また更新しますので、役に立った、また続きが読みたいという方はスキをいただけると励みになります(^^)

※作業時間40分、文字数1907字(タイトル含む)
私のポートフォリオが会計、法務、人事労務系の実務経験の長さをうたい文句にしていることもあり、また世間的にはなかなか進まないバックオフィスの自動化需要は一定数ありますから、実務では切っても切れないExcelVBAを使ったプログラミングを記事にいたしました。
私自身、実務でERPから出力した会計情報を加工するためにExcelVBAだけでなくAccessVBA/SQLなども使って仕事をしてきました。
連結だけでなく事業所単位などでも、数が多いと会計処理上かなりきつい処理が発生するケースがあります。(減損会計の際にセグメント別のCFを一覧にするのに加工してデータが出せない、といったシステム上の制約で苦労される方は多いと思います。)
中小企業での業務などにおいても、業務量はさほどではないにしてもマンパワーが圧倒的に不足するため、ExcelとAccessをかなり使っていました。

プログラムを学習するにあたって挫折するのはやはり「実務への応用」だと思います。
簿記検定であればテキストで学んだ内容を練習問題で解いて理解を深め、知識を定着させるということができますが、プログラムはなかなか実務で使う機会がないのと、仕事が忙しいために、プログラムの実務への応用を考えながら進めるというのが難しいということも多分にあるのではないかと思います。
私も最初、かなり残業や休日出勤もしてプログラムを書いていました。
こうした経験もあり、「実務者にとって効率的な学び方ってなんだろうか」という視点から、経理・総務・人事労務・営業事務といったバックオフィスの方向けの内容として作成いております。

分かっている方にとっては突っ込みどころが満載の内容かとは思いますが、あくまで前述のとおり、「バックオフィスの初学者向け」なわけですから、厳密にする必要はありません。
また、テーマや回を重ねることで、そうした「突っ込みどころ」に気づくはずです。
そういう気づきもまた「学び」だという寛容さは、最終的な目的地にたどり着いたときに俯瞰してみて初めて気づくもので、教えてあげて理解できる性質のものではないことはご理解いただけるのではないかと思います。

この記事が気に入ったらサポートをしてみませんか?