プログラミング言語には JAVA とか Ruby とか C とか Python とか色々ありますが、プログラミングは、基本的には「繰り返し」と「条件分岐」の組み合わせです。

基本が一緒なら、まず初めは一番簡単なツールで勉強するのがベストです。そこで、プログラミングが簡単にできる Excel を使って「繰り返し」と「条件分岐」について解説します。

※イラストはイラストACさんからお借りしました

プログラミングの学習がなぜ Excel なのか?

プログラマを目指していなくても、Excel で 文字入力するように、プログラミングができると何かと便利ですよね。

それに、これから パソコンを使って在宅ワークを始めたいなぁと思っている方、プログラミングスキルがあると有利ですよ! そして、初心者の方がプログラミングを学ぶのは Excel が最適です。なぜ Excel なのかについて、詳細は以下をどうぞ。

家でパソコンを使って生活費ぐらいは稼げるようになりましたが、そのための手段としてプログラミングスキルは何かと役に立ちます。 そこで今回は、どうやってプログラミングスキルを身につけたのか、私の体験談を書きますのでご参考にしていただければ幸いです。※イラストはイラストACさんからお借りしましたIT業界へ入るまでのいきさつ子どもがいたら働けないでしょう?と言われたのがきっかけ高校生の頃、夜、父が家に若い男性を連れて帰りました。どういう関係の人かは分かりませんが、会社の部下だったんだと思います。父とその若...

Excel でプログラミングを始めるには?

Excel でプログラミングを始めるためには、VBA Editor を起動できるようにするため、最初にちょっとだけ設定が必要になります。VBA Editor は Excel にもれなくついているプログラミングツールになります。詳しくは、以下をご覧ください。

プログラミングの勉強の入り口として一番のお勧めは Excel VBA です。これから Excel VBA を始める人のために、Excel プログラミングの基本と、VBA Editor を使ったデバッグの方法を解説します。プログラミングがリモートワークにお勧めな理由出社の必要が無くどこでも好きな場所で働けるリモートワークが盛り上がっていますね。これは、少子高齢化で働ける人が減っている中、子育てや障害などで家にいる人にも働いてもらいたいという国や企業の思惑と、技術革新やクラウドなどの環境が整ってきたことが理由に挙げられます。リモートワ...

繰り返し(ループ)

Excel で 事務作業をしていると、「何だかさっきから同じようなことを何度もやっている気がする」と感じることって、よくありますよね? 1行おきに行に色をつけるとか、隣のシートのデータを指定の場所にコピペし続けるとか。

そんなときに活用したいのがプログラミング。 「一定の規則性のある操作」に威力を発揮します。単純作業はコンピュータにお任せして、人間は人間しかできないことをやった方が生産性が上がるはず。 このような一連の作業の繰り返しこそ、プログラミングの得意とするところです。

プログラミングでは繰り返しのことを「ループ」と呼びます。プログラムにミスがあって永遠に終わらなくなってしまう状態を「無限ループ」と呼んでいます。プログラミング言語によって多少異なることもありますが、だいたい次の2種類の書き方があります。

For Next 文(繰り返す回数が決まっているとき)

何回繰り返すか分かっているとき、Excel では For 文を使います。例えば、同じ作業を10回繰り返すときは以下のように書きます。「i = 1 to 10」は、「i」が「1」から「10」まで繰り返すという意味になります。処理が1回終わると、「 Next i 」のところで、「i」が1個増えていきます。この「i」を「変数」と呼びます。

For i = 1 to 10
何か処理
Next i

Do Until または Do While 文(繰り返す回数が未定で、終了する条件を指定するとき)

繰り返す回数が決まっていないとき、Excel では Do 文を使います。終了条件の書き方は Excel では2種類あって、Until を使うときと While を使うときがあります。

For 文と違って、回数は自動で増えていきませんので、「 i = 0 」というように最初の i の値を指定し、繰り返しの手続きの中に「i = i + 1」という計算式を間に挟んで、手動で「i」の値を増やしていく必要があります。

「i = i + 1」というのは、i + 1 を 変数 i に入れるという意味で、i を一つずつ増やしていく計算式になります。この作業を忘れると無限ループになってしまいます。

Do Until の場合( i が 10より大きくなるまで繰り返す = i が 10より大きくなったら終わり)

i = 0
Do Until i > 10
何か処理
i = i + 1
Loop

until の場合、処理が終了したとき、i の値は11 になります。

Do While の場合(i が 10より大きければ繰り返す = i が 10より小さかったら終わり)

i = 0
Do while i > 10
何か処理
i = i + 1
Loop

while の場合、処理が終了したとき、i の値は0 になります。上記のプログラムでは、はじめから i は 10 より小さいので、処理は1回も実行されずに終了します。

条件分岐

「繰り返し」が永久に続いては困りますので、どこかで止める必要があります。その「終わらせる条件」を判断する部分が「条件分岐」になります。

10回やったらやめたいときは、1回終わるごとに「今何回目ですか?」と聞いて、「1回だったら止めないけど、10回だったら止める」というように判断することが必要になります。 この判断が「条件分岐」になります。

「条件分岐」は「繰り返し」の中で終了条件として使う以外にも、「女だったらこうして、男だったらこうする」とか、「足し算の結果が100になったら4で割る」などのように、状況に応じて操作内容を変えたいときにも使います。

「条件分岐」もプログラミング言語によって多少異なりますが、たいてい次の2種類があります。

IF 文

主に、条件分岐の選択肢が少ないときに使います。以下は、i が 1 のときだけ処理が行われます。

If i = 1 then
何か処理
End If

i が 1 以外のときも何か処理を行うときは、以下のように書きます。

If i = 1 then
何か処理
else
何か処理
End If

選択肢が増えたときは次のように書きます。

If i = 1 then
何か処理
elseif i = 2 then
何か処理
elseif i = 3 then
何か処理
else
何か処理
End If

Select Cace 文

IF 文では選択肢が増えていくとプログラムが分かりにくくなり不具合が起こりやすくなってしまいます。そのため、選択肢が多いときは、次の Select 文が便利です。こちらの方が分かりやすいですよね。このようにプログラムは分かりやすく書くよう努力することが大切です。プログラムの読みやすさを「可読性」と呼んでいます。

Select case i
case 1
何か処理
case 2
何か処理
case 3
何か処理
case else
何か処理
End Select

Select Case 文では、「Select case i」の「i」が「case 1」と等しいかどうかを判断しています。「i = 1」なら、「case 1」のところの処理が実行されるわけです。これを応用して、「Select case i – 10」というように計算式を入れることもできます。この場合 i が 17 なら「case 7」のように、計算の答えが選択肢になります。

実際に、繰り返しのコードを試してみます

ここまでは文法の基礎知識ですが、プログラミング上達の秘訣は、とにかく自分で書いて試してみることです。そんなとき、身近にあってすぐに使える Excel は非常に便利です。上記のプログラムが期待どおりに動くかどうか確かめてみましょう。手順は以下のとおりです。

Excel を起動させたら、メニューの「開発」にある「コードの表示」をクリックします。

次に、挿入メニューから「標準モジュール」をクリックします。

左側に「標準モジュール」が追加されました。

標準モジュールが選ばれていることを確認し、右側に以下のコードを記述します。(コードの内容はこの後説明しますので、とりあえずコピペしちゃってください)

コードの中にカーソルを置き、実行ボタンを押します。

コードは最低限にしていて、エラーチェックとか全くしていないので、例えば「sheet1」がないとエラーになりますのでご注意ください。

Excel の Sheet1 を確認します。こんな風になっていたら成功です。

入力したコードの解説

プログラムの書き出しは、Excel の場合は「Function」または「Sub」。今回は「Sub」にしました。Function と Sub の違いは、以下の記事で説明していますので、ご参照ください。

プログラムはダラダラと「なが~く」書き続けることもできますが、ミスを探すのが大変ですし、同じプログラムを何回も書くことになるので効率が悪いです。そこで、機能ごとに一つのまとまりにして使い回しができるようにしています。この機能のまとまりを「関数」と呼んでいます。ここでは、Excel VBA(Excel マクロ)で関数を作る方法を説明します。関数とは何か?関数とは何でしょう? 初めてExcelで「関数」という言葉を聞いた時、「関わる数ってなんだ?」とか、「数学で習った1次関数?」とかを思い浮かべて、やたら難しいよう...

Sub の後ろにある「Kurikaeshi1」は、プログラムの名前です。

Sub プログラムの名前・・・・End Sub

「For i = 1 to 10」は、回数を指定して繰り返したいときの Excel の書き方です。「i」が「1から始めて、10回繰り返す」という意味になります。20回続けたいときは、「For i=1 to 20」とすればよいですし、スタートを 10 にしたければ、「For i = 10 to 20」とすればOKです。

For スタート to 回数・・・・Next i

「WorkSheets(“Sheet1”).Cells( i, 1).Value = i」はExcel特有の書き方で、「シート1」のセルに「i」という値をセットするという意味です。「Cells()」のカッコの中はセルの位置で、左側が行、右側が列です。今回は右側が「1」なので、「A列」固定です。行は「i」なので、「1行目から10行目」まで値が入ることになります。

この、i と 1 を逆にして、「WorkSheets(“Sheet1”).Cells( 1, i ).Value = i」とすれば、横方向に文字が入力されていきますし、「WorkSheets(“Sheet2”).Cells( 1, i ).Value = i」とすれば、「Sheet2」に文字が入力されます。もちろん、シートの名前を変えているときは、その名前にしないとエラーになります。

WorkSheets(シートの名前).Cells( 行 , 列 ).Value = 入れたい値

条件分岐のコードを試してみます

では、条件分岐のコードについて考えてみます。先ほどの繰り返しの中で、i が 偶数になったらセルに色をつけるには、次のように書きます。

If i Mod 2 = 0 Then
Worksheets(“Sheet1”).Cells(i, 1).Interior.Color = RGB(255, 0, 0)
End If

「mod」というのは余りを求める計算式で、今回のコードは、もし「i を 2 で割ると余りが0」(偶数)なら、背景色を赤にするという意味になります。「Worksheets(“Sheet1”).Cells(i, 1).Interior.Color」の「Interior.Color」のことを「プロパティ」と言い、「背景色」という意味です。プロパティについても、また後日解説しますね。 先ほどのコードを次のように修正し、実行してみてください。

見慣れない言葉がたくさん出てくると何となくイヤな気分になりますが、ここではあまり気にしないでください。とりあえず動けば良いです。だんだん慣れてきますので。

こんな風に、1行ごとに色がついたら成功です。

まとめ

プログラミングの上達の秘訣は、以下の3点です

本に書かれている内容をそのまま試してみる

本を読むだけではなく、パソコンに向かって、実際にコードを入力して試してみることが大切です。

色々値を変えて動かしてみる

上記の例は、「1 から 10 を縦方向に入れる」というプログラムでした。では、「1から20を縦方向に入れてみよう」とか、「1から100を列方向に入れてみよう」「1から100で、1個飛び(奇数)にしてみよう」など、ちょっとずつ値を変えてみると理解が深まります。

応用してみる

理解が深まったら、普段の業務に活用できないか考えてみましょう。これができれば完璧です。

よろしければ次の記事もご参考にどうぞ。

プログラムはダラダラと「なが~く」書き続けることもできますが、ミスを探すのが大変ですし、同じプログラムを何回も書くことになるので効率が悪いです。そこで、機能ごとに一つのまとまりにして使い回しができるようにしています。この機能のまとまりを「関数」と呼んでいます。ここでは、Excel VBA(Excel マクロ)で関数を作る方法を説明します。関数とは何か?関数とは何でしょう? 初めてExcelで「関数」という言葉を聞いた時、「関わる数ってなんだ?」とか、「数学で習った1次関数?」とかを思い浮かべて、やたら難しいよう...