【閲覧くださっている皆様へ】URLが変わりました。一部転送が完了していない内部リンク先があります。「404 Not Found お探しのページは見つかりませんでした。」という表示になる場合は、"https://bits-lifestyle.com/jigaku-study/●●"から、"https://study.bits-lifestyle.com/●●"へ書き換えてアクセスくださいますよう、お願いいたします。ご迷惑をおかけいたします。

 
スポンサーリンク

プログラミング初心者が練習しながら理解するエクセルマクロ③「i=i+1」って何?

ExcelVBA(エクセルマクロ)

こんな方に書いた記事です。

  • プログラミングを勉強するのはマクロ(エクセルVBA)が初めて
  • 初級本を読んで途中からわからなくなった
  • まずはルーティン業務の時短が主な目的である(本格プログラミングというよりは、ざっくりと理解しすぐ使いたい)

「プログラミング初心者が練習しながら理解するエクセルマクロ」を初めて読まれる方はこちら

プログラミング初心者に立ちはだかる壁「 i=i+1 」

プログラミング初級本も中盤に差し掛かったあたりに出てくる「繰り返し処理」。
最初に言っておきますと、これの使い方が分かるとプログラミングが楽しくなってきます。人力でやっていた同じ処理があっという間に自動化でいきます。

その時に、前回やった変数の「 i 」がでてきます。

もちろん、変数は自分で命名できるので 「 i 」 じゃなくてもよいです。

これ、理解するまでのハードルはちょっと高いです。まず、 「 i=i+1 」 って、今まで数学で習った等式の常識を外れませんか。(ちなみに私は文系です。)結構混乱すると思われます。

学校で習ったことの中で近いのは・・・

「数学的帰納法」って覚えていますか?私はあれに近いと考えています。
※数学が嫌いだった人は、読み飛ばしてください。

nが自然数のとき、
1+2+3+…+n-1+n=½ n(n+1) を証明せよ。

1から順に足していくと、その最後の数とその次の数を足して2で割ったものと等しくなることを証明します。

まず、n=1を代入したときに成り立つことを確認し、
次にn=kで成り立つと仮定すると、n=k+1でも成り立つことを証明する。

要は、n=1の時も、その次のn=2の時も、その次のn=3の時も…式は成り立つから、証明できたということです。
i=i+1は、この、「その次の数」を表すと考えてみてください。

i=i+1ってどう見てもイコールにならない気がします・・・

ですよね。。。

プログラミングでは「=」「等しい」という意味でない場合もあります。マクロでは、主に右辺を左辺に代入するという意味になります。

 i = i+1 は、「左辺のi」に、「右辺の i+1 」を代入するということです。

ますます混乱してきました?下の練習問題に進みましょう。慣れるが勝ちです。

i=i+1 を練習しながら理解しよう

今回の構文
Cells(a,b a:行 b:列

例えばcells(2,3)なら、2行目のC列です。

どっちが行でどっちが列か、覚えるまで間違えやすいです。
あと列はExcelだとアルファベットなので、何列目かいちいち数えるのが面倒なので、対応表をつくると良いでしょう。

練習① まず、復習も兼ねて変数の置き方から。下記のコードについて、1を変数「 i 」に書き換え、変数を宣言してください。


Dim sht_1 As Worksheet
Set sht_1=Thisworkbook.sheets(1)

sht_1 .Cells(1,5)=”E1″
sht_1 .Cells(1,2)=”B1″
sht_1 .Cells(1,8)=”H1″
答えをクリック

Dim sht_1 As Worksheet
Dim i As Long

Set sht_1=Thisworkbook.sheets(1)
i=1

sht_1 .Cells(i,5)=”E1″
sht_1 .Cells(i,2)=”B1″
sht_1 .Cells(i,8)=”H1″

まずは変数「i」に見慣れてもらうための問題でした。次は 実際に代入してみます。

練習② 今度は逆に、下記のような変数iが含まれるコードをア~オに従い実際の数に置き換え(代入し)てください。

※分かりやすくするために、変数の宣言その他は省略してあります。

sht_1 .Cells(i,10)=i*2

ア、i=1

イ、i=2

ウ、i=3

エ、i=4

オ、 i=5

それぞれを代入したとき、どうなりますか。

答えをクリック

ア、sht_1 .Cells(1,10)=2

イ、sht_1 .Cells(2,10)=4

ウ、sht_1 .Cells(3,10)=6

エ、sht_1 .Cells(4,10)=8

オ、sht_1 .Cells(5,10)=10

今回は1~5だから何とか書けたものの、100とか1000までだと書けないです。これをまとめて書いたものが次に出てきます。

練習③ 下記のコードについて、⓶のi*2はどう変化していきますか?ア~ウから選択してください。

こんな感じのエクセルシートをイメージしてください。数字が入っている5行目までB列に計算結果を書いていきたいとします。

i=1 からスタートして、⓵⓶③⓸の順に代入していき、⓸までいったら⓵に戻って繰り返します。 ※こちらも変数の宣言等は省略。

i = 1

選択肢
ア、2,4,6,8
イ、2,4,6,8,10
ウ、2,4,6,8,10,11
ヒント

とにかく、順番に i に代入していってください。
答えをクリック

こたえは、イです。

順番に見ていきましょう。解説が長いので下に書いていきます。

練習③の長い長い解説はこちら。

LOOP 1週目 i=1 のとき
⓵””は空欄という意味です。「Cells(i,1)が空欄になるまで」この処理を繰り返すということになります。
i=1なので、Cells(1,1)つまりA1セルを見ます。1という数字が入っているため空欄ではありませんので、②に行きます。

⓶i=1を代入すると、
sht_1 .Cells(1,2)=2 となります。
つまりA1に2という数字が書き込まれます。

③n=n+1  まず、n=1は右辺(n+1)だけに代入してください。
すると、n+1は2になり n=2 となります。
つまり、次の数になる、このエクセルでは、次の行に行くということを表します。(ここでは i は行なので)


⓸までいったので⓵に戻ります。

LOOP 2週目 i=2 のとき
⓵i=2なので、Cells(2,1)つまりA2セルを見ます。2という数字が入っているため空欄ではありませんので、②に行きます。

⓶i=2を代入すると、
sht_1 .Cells(2,2)=4 となります。
つまりA2に4という数字が書き込まれます。

③n=n+1  はn=3
つまり、次の数になる、このエクセルでは、次の3行目にいきます。


⓸までいったので⓵に戻ります。

LOOP 3週目 i=3 のとき
※同じことなので、読み飛ばして構いません。

⓵i=3なので、Cells(3,1)つまりA3セルを見ます。3という数字が入っているため空欄ではありませんので、②に行きます。

⓶i=3を代入すると、
sht_1 .Cells(3,2)=6 となります。
つまりA3に6という数字が書き込まれます。

③n=n+1  はn=4
つまり、次の数になる、このエクセルでは次の4行目にいきます。

LOOP 4週目 i=4 のとき
※同じことなので、読み飛ばして構いません。

⓵i=4なので、Cells(4,1)つまりA4セルを見ます。4という数字が入っているため空欄ではありませんので、②に行きます。

⓶i=3を代入すると、
sht_1 .Cells(4,2)=8 となります。
つまりA4に8という数字が書き込まれます。

③n=n+1  はn=5
つまり、次の数になる、このエクセルでは次の5行目にいきます。

LOOP 5週目 i=5 のとき
※そろそろ注意してください。

⓵i=5なので、Cells(5,1)つまりA5セルを見ます。5という数字が入っているため空欄ではありませんので、②に行きます。

⓶i=3を代入すると、
sht_1 .Cells(5,2)=10 となります。
つまりA5に10という数字が書き込まれます。

③n=n+1  はn=6
つまり、次の数になる、このエクセルでは次の6行目にいきます。。。。?

おーっと危ない!!

LOOP 6週目 i=6 のとき
⓵i=6なので、Cells(6,1)つまりA6セルを見ます。

空欄です。なので、ここでLOOP終了です!!

長くなりましたが、マクロで躓いたら、落ち着いて1個1個確認してみると解決することがあります。次回は、もっと実用的な形で実践していきましょう。

コメント

WP Twitter Auto Publish Powered By : XYZScripts.com
タイトルとURLをコピーしました