LoginSignup
1
1

More than 3 years have passed since last update.

Q5.特定の条件に合致するセルの情報を取得するには?

Last updated at Posted at 2020-01-12

例えば、以下のようなデータがあります。
便宜上ここでは、ある職場のメンバーの年齢が書いてある情報と仮定しておきます。

Q5-1.png

ここから、年齢が30歳以上の人が何人いるか調べるというマクロを作ってみます。
調べた後に、ウィンドウで30歳以上の人は〇〇人です。といった具体にメッセージを表示させてみます。

ポイントは、条件分岐です。if文を使って、30以上の人が何人いるかを
どのように表現していくかです。
また、どのようにセルの情報を参照していくかも一つのポイントです。
今回は、forEach文という構文を使用しています。

それでは、マクロの方を見ていきましょう。

Q5-2.png

Sub Q5_Answer()
    Dim i As Range
    Dim cnt As Integer
    For Each i In Range("C2:C8")
        If i.Value >= 30 Then
            cnt = cnt + 1
        End If
    Next i
    MsgBox "30歳以上の人数は" & cnt & "人です。"

End Sub

3行目にポイントとなるForEach文が出てきていますね。
ForEach文は複数のデータを扱うときに便利な構文です。

例えば、今回の例でいうと、Range("C2:C8")としているので、
iには、C2~C8のRangeの情報が順番に格納されていきます。

forEach文のループ内に、30以上のデータを調べるif文を記述し、
条件に合致したら、cntという人数をカウントする変数に、値を足していきます。

そして、最後MsgBoxという関数で、メッセージを表示させています。

ちなみに、マクロを実行した結果は以下のような画面となります。

Q5-3.png

ちゃんと、人数が表示されていますね。
もちろん、データを変えれば結果も変わりますので、試してみてください。

今回はかなり簡易なマクロではありますが、いろいろ応用ができます。
例えば、アンケートに"はい"と答えた人の数をカウントするマクロだったりとか、
飲み会の出欠をカウントする時だったりとか特定のデータを調べるというシーンは、
日常的に結構あったりします。

そういった場合にマクロに落とし込むことができればかなり楽になるでしょう。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1