pickup

目次

2重ループの工程を説明

こんにちは。伊川(@naonaoke)です。

2重ループについて、質問がありましたので、解説をしたいと思います。

他の言語を勉強すると、大体、最初にループが来ます。

変数、ループを後から勉強するのは、VBAくらいではないでしょうか?

私もそうでしたが、ループを理解する日は、突然やってきます。

ループを理解すると配列も理解しやすくなります。

今回は、Index関数とMatch関数を使って説明します。

このブログはこんな人にお勧め

今回のお題
  • ループを理解できていない人
  • 2重ループが理解できない人
  • ループを利用して、もっとコードを短縮したい人

解決

2重ループを理解すると、コードを記載することが楽しくなります。
最初は難しいですが、わかりやすく解説しましたので、最後まで購読していただければ幸いです。


スポンサーリンク

2重ループ

ループだけでも難しいのに、そのループを2重に使うことなどは、私も最初は想像できませんでした。

しかし、何度もコードを見ていくと、何となく理解できるものです。

何となく理解できたら、実際に自分でコードを作成して、動かすことが重要です。

今回は、競馬ネタになります。

2重ループ 作業手順 その1 データベース確認



上記6列(B列~G列まで)を一気に参照します。

では、順に説明します。

2重ループ 作業手順 その2 変数を決める

上の図のように変数を決めましょう。

最上段に、変数の意味を記載することによって、第三者が見てもわかるようにしておきましょう。

2重ループ 作業手順 その3 通常のVBAのループ文

上のようなコードになります。


この部分が肝となるコードになります。

IndexとMatch関数で、参照した値を変数myRに格納しています。

2重ループ 作業手順 その4 意外と知らないループの原則

私は、最初はなにもわからないで、コードを記載していたのです。

For Next構文は、変数iを使っています。

つまり、ループで参照する場所は、全て、変数iを使うという事です。

この理屈がわからず、勝手に変数を決めて、様々なエラーが発生したり、無限ループにはまった記憶があります。



この場合なら、変数iで統一しなければなりません。


まずは、1行、完成しました。

2重ループ 作業手順 その5 表示させたい列を数字で表す


ws_2.Range(“B:B”)に数字を利用して表現するには、どうしたらいいだろうか?

ループを利用するには、数字を利用する必要があります。

Range(“B:B”)は、Columns(2)と同じ意味になります。


上の図のコードは、同じ意味になります。

Range(“B:B”)を、Columns(2)という表現に変化させることができました。

Columns(2)のカッコの中の数字を、変数に置き換え、その変数をループさせるといいのではないか?

このような憶測が立ちます。


このようなコードを考えます。


変数jは、横にスライドします。

なので、表現したいセルにも、必ず、変数jを利用しないと、セルに値を表現できません。

注意しなければならないこと

ループの記載する順番を間違えてはいけません。


上記が完成のコードです。


完成しました。

ここがポイント

ここがポイント
Function8.png

ループも配列も、丁寧に考えることです。
最初は時間がかかりますが、慣れてくると、時間は短縮していきます。恐れて、ループを利用しないと、コードが長くなり、メンテナンスも面倒になります。是非、ループをみなさんのスキルにしてください。
動画とブログでわかりやすくExcelとACCESSを紹介しています

まとめ

今回は、二重ループについて解説しました。

この記事で、ループの苦手意識がなくなれば、幸いです。

最後まで読んでいただき、ありがとうございました。

今回のサンプルファイルは、No173です。

サンプルファイルを購入希望の方はココをクリック
毎日の業務が、3時間短縮できます

わからない事を延々と考えるのは、無駄です。

  • なんで作動かないの?
  • もうやだ!VBAなんか嫌い!
  • ネットで調べても情報がない!

必ず作動するコードが、ここにあります。

スポンサーリンク

Twitterでフォローしよう

おすすめの記事