Help us understand the problem. What is going on with this article?

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

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

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

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

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

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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away