検索

キーワード


目次

【Excel VBA】条件で繰り返しを行うか判断する方法

  • 公開日:2023-06-26 13:21:07
  • 最終更新日:2023-06-26 09:45:29

Workteria(ワークテリア)では難易度の高いものから低いものまで、スキルや経験に合わせた案件を多数揃えています。会員登録は無料ですので、ぜひ会員登録してご希望の案件を探してみてください!

フリーランス/正社員のエンジニアとして活躍するには、ご自身のスキルや経験に合わせた仕事を選ぶことが大切です。ご希望の案件がみつからない場合はお気軽にお問い合わせください!ユーザ満足度の高いキャリアコンサルタントが在籍していますので、希望条件や悩み事などなんでもご相談ください。ご希望にピッタリの案件をご紹介させていただきます。

皆さんこんにちは、エンジニアのIMMRです。


下記のようなブックがあったとします。


図1 サンプルブック

図1 サンプルブック

このリストにおいて、6月と7月だけの参加者人数の合計を計算したいと思います。

どのように行いますか。


もちろん、一番上から一番下までFor Nextを使用して

その中で日付が6月と7月分だけ参加者人数だけを計算するという方法もあります。


しかし、今回は、Nor Nextではなく、Do Loopという繰り返し作業を行っていきたいと思います。


1.Do Loopステートメントについて

Do Loopステートメントも繰り返し処理の一つです。

では、For  Nextとなにが違うのかというと

For  Nextは、指定した回数だけ繰り替えしを行うのに対して

Do Loopは指定した条件だった場合、繰り返しを行います。


また、Do Loopは2種類あり、

1つは、指定の条件になるまで処理を繰り返す

もう一つは指定の条件である場合は処理を繰り返す

があります。

まあ、行っていることは同じなのですが・・・


図1 サンプルブックでイメージしてみると


図2 Do Loop説明

図2 Do Loop説明


2つとも同じ範囲だが、条件が違う。

6月と7月の範囲において、

①6月~7月の範囲で処理を続ける。→8月になるまで処理を続ける。

②6月~7月の範囲で処理を続ける。→8月より前の月だったら処理を続ける。

という感じです。


2.Do Loopステートメントの記載方法

上記でも説明しましたが、Do Loopは2種類あり、記載方法も変わります。

その記載方法について、1つずつ説明します。


①指定の条件になるまで処理を繰り返す

これは条件が満たすまで処理を続ける方法です。

記載方法は下記の通りです。


記載方法

Do Until 条件
    処理
Loop

Do Until  条件で記載します。

これは、条件になるまで、処理を続ける。

Do Until ~Loopまでの処理繰り返すといった方法です。


②指定の条件である場合は処理を繰り返す

これは条件が満たしている間は処理を続ける方法です。

記載方法は下記の通りです。


記載方法

Do While 条件
    処理
Loop

Do While  条件で記載します。

これは、条件である場合は処理を続ける。

Do While ~Loopまでの処理繰り返すといった方法です。


3.Do Loopステートメントの記載(サンプルプログラム)

ではサンプルプログラムを見ていきましょう。

図1 サンプルブックを使用したサンプルプログラムになります。


サンプルプログラム1(①指定の条件になるまで処理を繰り返す

Sub test1()

    Dim i As Long
    Dim sum_M As Long

    sum_M = 0
    i = 4

    Do Until Month(Cells(i, 1)) = 8
        sum_M = sum_M + Cells(i, 2)
        i = i + 1
    Loop

    Range("E1") = sum_M

End Sub


Do Until を使用して、繰り返しを行っています。

Do Untilは、指定の条件になるまで処理を繰り返すです。

条件が8、つまり8月まで処理を続けることになるので、処理の対象は6月と7月になります。


サンプルプログラム2(②指定の条件である場合は処理を繰り返す)

Sub test2()

    Dim i As Long
    Dim sum_M As Long

    sum_M = 0
    i = 4

    Do While Month(Cells(i, 1)) < 8
        sum_M = sum_M + Cells(i, 2)
        i = i + 1
    Loop

    Range("E1") = sum_M

End Sub


Do While を使用して、繰り返しを行っています。

Do Whileは、指定の条件である場合は処理を繰り返すです。

条件が8より小さい、つまり8月より前の間は処理を続けることになるので、処理の対象は6月と7月になります。


4.Do Loopステートメントの記載(サンプルプログラムの実行)

下記の結果のように

Do Until を使用したサンプルプログラム1(①指定の条件になるまで処理を繰り返す)と

Do While を使用したサンプルプログラム2(②指定の条件である場合は処理を繰り返す)

同じ結果になりました。


図3 サンプルプログラム1(①指定の条件になるまで処理を繰り返す)実行結果

図3 サンプルプログラム1(①指定の条件になるまで処理を繰り返す)実行結果


図4 サンプルプログラム2(②指定の条件である場合は処理を繰り返す)実行結果

図4 サンプルプログラム2(②指定の条件である場合は処理を繰り返す)実行結果


Do Until を使用したサンプルプログラム1(①指定の条件になるまで処理を繰り返す)と

Do While を使用したサンプルプログラム2(②指定の条件である場合は処理を繰り返す)

のどちらも同じ結果にすることができました。


これにより、条件で繰り返しを行うか判断することができました。



【著者】

Imamura

「挑戦心」を忘れずに、新しいことにチャレンジしています。 資格:VBAエキスパート Excel VBA(ベーシック/スタンダード) 等

編集した記事一覧

正社員/フリーランスの方でこのようなお悩みありませんか?

  • 自分に合う案件を定期的に紹介してもらいたい
  • 週2、リモートワークなど自由な働き方をしてみたい
  • 面倒な案件探し・契約周りは任せて仕事に集中したい

そのような方はぜひ、Workteriaサイトをご利用ください!

  • 定期的にご本人に合う高額案件を紹介

  • リモートワークなど自由な働き方ができる案件多数

  • 専属エージェントが契約や請求をトータルサポート

よく読まれている記事