初めて利用をさせていただきます。ExcelVBAについて詳しい方ご教授お願い致します。
Excelにて以下のような表でA列、B列の組み合わせで同一のレコードが3件あればMsgBoxで
その旨を表示させるようにしたいと考えております
A列(No) B列(会社) C列(品目)
1 a社 リンゴ
2 a社 ミカン
3 b社 バナナ
4 a社 リンゴ
5 a社 ミカン
6 a社 リンゴ
上記の表ですとa社りんごの組み合わせが3件になるのでメッセージ表示させたいです。
調べてみたところこのような場合の重複確認にdictionaryという関数?が使えそうと思いましたので以下のように作ってみました。
【試したこと】
繰り返し処理で1行ずつ値を確認
A列とB列の値を組み合わせ変数Keyに代入し
1行ごとに変数Keyの値が配列に登録されているかチェック
登録されていればcntxを+1、未登録の場合はカウントアップさせずに配列へ登録させる。
繰り返し処理が終了後、cntxの値を確認し10以上の場合はメッセージを出す
Dim Key As String
Dim checkDic As Dictionary
Set checkDic = New Dictionary
’重複カウント変数 重複値の2つ目からカウントするため初期値に1を代入
Dim cntx As Long: cntx = 1
Do
(繰り返し条件)
Key = .Cells(cntDate + 4,2).Text & .Cells(cntDate + 4,3).Text
If checkDic .Exists(Key) Then
cntx = cntx +1
Else
checkDic .Add Key 0
End If
cntDate +1
Loop
If cntx >= 10 Then
MsgBox"同一社名・品目は3件以上登録できません"
End If
上記のように記載し動かしてみたところ重複値があればctnxのカウントが増えはするのですが
B列C列の組み合わせごとにカウントするようになりません。(当たり前ではありますが...)
B列C列の組み合わせごとに重複する値を数える方法はありますでしょうか?
A列(No) B列(会社) C列(品目)
1 a社 リンゴ
2 a社 ミカン
3 b社 バナナ
4 a社 リンゴ cntx+1(2)
5 a社 ミカンcntx+1(3)←別でカウントアップさせたい
6 a社 リンゴ
拙い書き方で恐れ入りますがご存じの方いらっしゃいましたら教えてください。

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/02/15 10:46