Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


4378 / 13644 ツリー ←次へ | 前へ→

【57028】重複データがあるかどうか探す kazuki 08/7/17(木) 22:31 質問[未読]
【57033】Re:重複データがあるかどうか探す kanabun 08/7/17(木) 23:37 発言[未読]

【57028】重複データがあるかどうか探す
質問  kazuki  - 08/7/17(木) 22:31 -

引用なし
パスワード
   初心者なのでよろしくお願いします。

列のデータの中に、重複されたデータがあるかどうか探したいです。
あれば、メッセージボックスを表示するだけなのですが、
自分なりに探してみましたが、入力したデータが重複されているかどうかの構文しか見つかりません。
すでに入力の済んだ列の重複データ検索の仕方を教えてください。

5列30行ほどの表で、探す値は文字列です。

【57033】Re:重複データがあるかどうか探す
発言  kanabun  - 08/7/17(木) 23:37 -

引用なし
パスワード
   ▼kazuki さん:

こんばんは。

>列のデータの中に、重複されたデータがあるかどうか探したいです。
COUNTIF関数が使えそうです。

たとえばチェック列がB列だったとしたら、
空いている作業列(たとえばG列)に
G2  =COUNTIF($B$2:$B$50,B2) と式をいれ、ズズッと下へドラッグコピーしてください。2以上のものが重複しているセルです。


>あれば、メッセージボックスを表示するだけなのですが、
どの行とどの行とが重複しているか、メッセージボックスに表示したいなら、
Dictionaryで重複チェックすることもできます。

Dictionaryの解説は↓ココがいちばん分かりやすい。


Sub B列をチェック()
 Dim v As Variant, key As String
 Dim i As Long, Msg As String
 
 With ActiveSheet
   v = .Range("B2", .Range("B65536").End(xlUp)).Value
 End With
 
 With CreateObject("Scripting.Dictionary")
   For i = 1 To UBound(v)
     key = v(i, 1)
     If .Exists(key) Then
       .Item(key) = .Item(key) & "," & i + 1
     Else
       .Item(key) = i + 1
     End If
   Next
   For Each v In .Keys
     If InStr(.Item(v), ",") Then
       Msg = Msg & v & vbTab & .Item(v) & vbCr
     End If
   Next
 End With
 If Len(Msg) Then
   MsgBox Msg, , "重複キーと重複行"
 Else
   MsgBox "重複はありません"
 End If
End Sub

重複しないリストを作る
http://www.officetanaka.net/excel/vba/tips/tips80.htm

4378 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free