• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBAについて)

VBAについてのコードの条件追加方法

このQ&Aのポイント
  • VBAを使用して特定の条件に基づいてデータをカウントするコードについて質問があります。現在、特定の条件に基づいてデータをカウントすることはできますが、さらに条件を追加したいと考えています。具体的には、D列にある日付を指定した範囲で条件に加えたいと思っています。また、この条件に合致したデータだけでなく、日付に関係なく全てのデータに対してカウントしたいという要望もあります。具体的な例として、データが2011年と2012年の2年分あり、2012年のデータのみカウントしたい場合でも、2011年のデータにも2012年のカウント結果が表示されるようにしたいと考えています。どのように実現できるか、詳しい方にアドバイスをいただきたいです。
  • この質問はVBAを使用して特定の条件に基づいてデータをカウントするコードについてのものです。現在、データの特定の条件に基づいてカウントすることはできるのですが、さらに条件を追加したいと考えています。具体的には、D列にある日付を指定した範囲で条件に加えたいと思っています。また、この条件に合致したデータだけでなく、全てのデータに対してカウントしたいという要望もあります。例えば、データが2011年と2012年の2年分あり、2012年のデータのみカウントしたい場合でも、2011年のデータにも2012年のカウント結果が表示されるようにしたいと考えています。このような要望を実現する方法について、詳しい方に教えていただけますか?
  • VBAを使用して特定の条件に基づいてデータをカウントするコードについて質問があります。現在、条件に基づいてデータをカウントすることはできますが、さらに条件を追加したいと思っています。具体的には、D列にある日付を指定した範囲で条件に加えたいと思っています。また、この条件に合致したデータだけでなく、日付に関係なく全てのデータに対してカウントしたいという要望もあります。例えば、データが2011年と2012年の2年分あり、2012年のデータのみカウントしたい場合でも、2011年のデータにも2012年のカウント結果が表示されるようにしたいと考えています。どのように実現できるか、詳しい方にアドバイスをいただけますでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.2

Sub sample() Dim dic As Object Dim lastRow As Long Dim r As Long Dim key As String Set dic = CreateObject("Scripting.Dictionary") 'Dictionaryオブジェクト lastRow = Range("A" & Rows.Count).End(xlUp).Row 'A列最終行 'データ収集 For r = 3 To lastRow '3行目から最終行まで If Year(Cells(r, "D").Value) = 2010 Then '日付が2010年ならば key = Range("A" & r).Value & Chr(0) & Range("Z" & r).Value 'キー値はA列注目行の値+Z列注目行の値(間にchr(0)) If Not dic.exists(key) Then 'キー値が無ければ dic.Add key, 1 'キーを追加して、値(個数)を1に Else '既にキー値があれば dic(key) = dic(key) + 1 'そのキーの値(個数)+1 End If End If '★追加 Next '表示 For r = 3 To lastRow '3行目から最終行まで key = Range("A" & r).Value & Chr(0) & "1" '探す値はA列注目行の値+"1"(間にchr(0)) Range("BW" & r).Value = dic(key) 'BW列にその値(個数)を表示 Next End Sub みたいな事ですか?

ryutahayashi
質問者

お礼

ありがとうございました。 大変助かりました。

その他の回答 (1)

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

> 日付の条件は2012年の10000件だとすると2011年の条件に > 入ってない方のデータにも2012年で算出したデータが入力される状態です。 数行の例で良いので、データと抽出条件をシート画像キャプチャで例示してください。

ryutahayashi
質問者

お礼

補足がおかしくなってすみませんでした。 みなさんのおかげで解決できました。

ryutahayashi
質問者

補足

下記のデータは2012/1/1~2012/12/31の間でA列の番号別でZ列の1の回数を数えています。 不正解例だと2011年のデータに2012年でカウントしたデータが 入っていません。 何度もすみませんがよろしくお願いします。 正解例 A列   D列(日付)   Z列   1回数(BW列) 1234 2012/1/15 1 1 1234 2012/2/20 5 1 1234 2012/2/21 2 1 1234 2011/8/15 2 1 1234 2011/9/29 3 1 9999 2012/1/15 4 2 9999 2012/2/20 1 2 9999 2012/11/21 1 2 9999 2011/12/15 5 2 1111 2012/9/29 6 2 1111 2012/1/15 1 2 1111 2012/2/20 1 2 1111 2012/2/21 5 2 1111 2011/6/15 1 2 1111 2011/7/29 1 2 不正解例 A列   D列(日付)   Z列   1回数(BW列) 1234 2012/1/15 1 1 1234 2012/2/20 5 1 1234 2012/2/21 2 1 1234 2011/8/15 2 1234 2011/9/29 3 9999 2012/1/15 4 2 9999 2012/2/20 1 2 9999 2012/11/21 1 2 9999 2011/12/15 5 1111 2012/9/29 6 2 1111 2012/1/15 1 2 1111 2012/2/20 1 2 1111 2012/2/21 5 2 1111 2011/6/15 1 1111 2011/7/29 1

関連するQ&A