長いものには巻かれない

常識は非常識かもしれないと考えてみる

プログラムの基本は「繰り返し」と「条件分岐」の二つだけ。Excelサンプルコード付き。

プログラミングはとってもシンプルです。だから奥が深い。細かい決まり事はたくさんあるけど、結局のところ「繰り返し」と「条件分岐」を組み合わせているだけです。

こんにちは。天気が悪いせいか、毎日パソコンに向かっているせいか、目の奥が痛いです。こんな時は暖かいタオルを目に乗せて休憩すると気持ち良いですね。

でも、ホットアイマスク を検索してみたら色々出てきましたが、使い捨ては高いし、USBタイプは焦げるとか書いてあるし、イマイチでした。

f:id:komanaho:20161214092500j:plain

プログラミング言語より何をしたいのかが大事

昔勤めていたソフトハウスに新人の男の子が入ってきたんですが、すぐに辞めてしまいました。理由は「C言語をやりたかったのにやらせてもらえない」からだとか。自分のキャリアを考えて、さっさと会社を見限るのは悪いことではないですが、なぜC言語をやりたいのかがはっきりしてなくて、この人大丈夫かな?と思いました。

なほちゃんはあんまりプログラミング言語にこだわりはなくて、やりたいことが簡単に実現できるのなら何を使ってもOKと思います。

業界では Excelマクロみたいな Visual Basic系のものをバカにしている感じがしないでもないですが、世の中、中小企業が9割を占めているわけですし、ちっちゃい会社はExcelAccess で十分業務改善できるし、それすらできていない会社の方が圧倒的に多くて、なのに騙されて何百万もするソフトを買わされてるケースを良く見かけます。

プログラミング言語って種類によって違うのか?

プログラミング言語も星の数ほどあります。「何それ、聞いたことないよ」っていうマイナーなのもたくさんあって、出向させられれば我がままも言えなし、現場で使われている言語を即効で覚えるということもあります。また、新しい言語がしょっちゅう生まれるので、古い言語にこだわっていると仕事がなくなる、ということもあります。

つまり、プログラマは、基本を覚えたら、あとは微妙なところを追加して覚えていくという姿勢じゃないとやっていけないということ。そして、言語によって、そんなに違うのか?というと、そうでもないです。

プログラミングの基本その1 「繰り返し」

まず、プログラミングの基本は、同じことを繰り返させること。ルールが決まっているのなら人間がやることもないでしょ、機械に自動化させましょう、という考え方です。(AIは別ね)

繰り返しで大事なのは「終了条件」。これを決めないと永遠に繰り返しが続きます。(無限ループ)終了条件には2つあって、次のどちらかです。

  • 繰り返す数を決める(例:10回繰り返したら終わり)
  • 条件が変わったら終わる(例:〇〇が××になったら終わり)

プログラミングの基本その2 「条件分岐」

条件分岐っていうと難しい感じがしますが、つまり、「どちらか選んでね」ということです。選ぶ対象が何個あるかで、書き方を変える場合があります。

  • 選ぶ対象が2つ(例:性別は男?女?)
  • 選ぶ対象が3つ以上(例:好きな食べ物は、肉?魚?野菜?)

Excelだとどう書くか?

繰り返しと条件分岐はプログラムの基本なので、書き方に多少の違いはあっても、どのプログラミング言語にも必ずあります。Excelを例に説明します。

リボンから開発を選ぶ

開発がない場合は、こちらの記事をご覧ください。

nagaimono.hateblo.jp

開発からコードの表示を選び、標準モジュールを追加

標準モジュールの追加の方法の記事はこちら。

nagaimono.hateblo.jp

標準モジュールに、以下のソースコードを貼り付けます

f:id:komanaho:20161214103806j:plain

ソースコードはこんな感じ。コピペしちゃってください。

Sub Kurikaeshi1()
Dim i As Integer

For i = 1 To 10
    Worksheets("Sheet1").Cells(i, 1).Value = i
Next

End Sub

コードの解説

関数のときは「Function」からスタートしましたが、値を返さなくて良いときは「Sub」で書きます。「Kurikaeshi1」は、このプログラムの名前です。

Sub プログラムの名前(引数)・・・・End Sub

「For i=1 to 10」は、Excelで、回数を指定して繰り返したいときの書き方。「i」が「1から始めて、10回繰り返す」という意味です。VBではNext の後ろに「i」を書くのが普通かな。なくても動くし、他の言語では書かないのが普通。

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

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

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

実行するには?

コードの中にカーソルを置き、実行ボタンを押します。コードは最低限にしていて、エラーチェックとか全くしていないので、例えば「sheet1」がないとエラーになりますのでご注意ください。

f:id:komanaho:20161214105149j:plain

 こんな風になったら、成功!

f:id:komanaho:20161214111439j:plain

 

是非、コードを色々変えて遊んでみてくださいね。繰り返しを20回にしてみるとか、Cellsのカッコ内の「i」を列側にしてみるとか。両方「i」にしたらどうなるかな。

 

晴れてきたので、たまった洗濯物を片付けないと。他の繰り返しの方法や条件分岐については、また今度書きま~す。