Excel VBA質問箱 IV

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

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


5581 / 76735 ←次へ | 前へ→

【76764】Re:シート1とシート2の内容で一致するものがあれば結果表示をさせたい
発言  β  - 15/3/10(火) 13:20 -

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

まず、このコードは2つの入れ物を使っています。
1つが Dictionary と呼ばれるもの。もう1つがArrayListと呼ばれるものです。
いずれもVBAの持ち物ではなく 外部(.Net等)の機能なので、CreateObject で呼び出して使用。

Dictionary は同じキーを格納した時に上書きされる特徴をもっていて、コードでは
Sheet2の名前を格納するのに使っています。山田が何件あろうと1件の山田になります。

ArrayListは、キー/データという概念はないのですが同じ値を別のものとして格納可能です。
コードでは、重複のあったものを格納するのに使っています。Sheet3 に山田が3件あれば3件格納されます。
また、ArrayListは格納されたものを昇順、降順に並び替える機能もあります。
エラーメッセージで
山田
佐藤
山田
佐藤
とだすより
山田
山田
佐藤
佐藤
とだすほうがわかりやすいので、この昇順並び替え機能を使っています。(これが dl.Sort です)

Dictionaryには、Existsメソッドがあり、ある値が、Dictionaryのキーとして格納されているかどうかの
判定ができます。それが dic.exists(c.Value) で、このメソッドが返す結果が True なら 
重複しているということになりますので、それを dl.Add c.Value でArrayList に登録しています。

ArrayListに格納した内容は、VBAからは一挙に取り出せないので、ArrayListと同じ大きさの
ReDim v(0 To dl.Count - 1) で1次元配列をつくり、その配列に、ArrayListからインデックスを与えながら
v(i) = dl(i) で、データを取り出しておさめています。
(ArrayListのインデックスは 0 から始まっています)

さて、重複側を、あえてその件数だけすべて表示するという要望でしたのでArrayListを使いましたが
集約して1件にして表示するなら、重複情報も ArrayListではなくDictionary に格納して重複をなくす
ことができます。

以下でお試しください。

Sub Test2()
  Dim dic As Object
  Dim dl As Object
  Dim i As Long
  Dim v As Variant
  Dim c As Range
 
  Set dic = CreateObject("Scripting.Dictionary")
  Set dl = CreateObject("Scripting.Dictionary")
 
   With Sheets("Sheet2")
    For Each c In .Range("A1", .Range("A" & Rows.Count).End(xlUp))
      dic(c.Value) = True
    Next
  End With
 
   With Sheets("Sheet3")
    For Each c In .Range("A1", .Range("A" & Rows.Count).End(xlUp))
      If dic.exists(c.Value) Then dl(c.Value) = True
    Next
  End With
 
  If dl.Count > 0 Then
    MsgBox "以下の重複がありました" & vbLf & Join(dl.keys, vbLf)
  Else
    MsgBox "重複はありませんでした"
  End If
 
End Sub

1 hits

【76750】シート1とシート2の内容で一致するものがあれば結果表示をさせたい あや 15/3/9(月) 16:01 質問[未読]
【76751】Re:シート1とシート2の内容で一致するもの... β 15/3/9(月) 16:49 発言[未読]
【76752】Re:シート1とシート2の内容で一致するもの... β 15/3/9(月) 17:20 発言[未読]
【76761】Re:シート1とシート2の内容で一致するもの... あや 15/3/10(火) 11:20 質問[未読]
【76764】Re:シート1とシート2の内容で一致するもの... β 15/3/10(火) 13:20 発言[未読]
【76765】Re:シート1とシート2の内容で一致するもの... あや 15/3/10(火) 14:14 質問[未読]
【76766】Re:シート1とシート2の内容で一致するもの... β 15/3/10(火) 16:17 発言[未読]
【76791】Re:シート1とシート2の内容で一致するもの... あや 15/3/12(木) 21:04 質問[未読]
【76793】Re:シート1とシート2の内容で一致するもの... β 15/3/12(木) 21:44 発言[未読]
【76798】Re:シート1とシート2の内容で一致するもの... あや 15/3/16(月) 19:51 質問[未読]
【76799】Re:シート1とシート2の内容で一致するもの... あや 15/3/16(月) 20:22 質問[未読]
【76800】Re:シート1とシート2の内容で一致するもの... β 15/3/16(月) 21:42 発言[未読]
【76801】Re:シート1とシート2の内容で一致するもの... あや 15/3/17(火) 9:55 質問[未読]
【76802】Re:シート1とシート2の内容で一致するもの... β 15/3/17(火) 11:04 発言[未読]
【76803】Re:シート1とシート2の内容で一致するもの... あや 15/3/17(火) 13:13 質問[未読]
【76804】Re:シート1とシート2の内容で一致するもの... あや 15/3/17(火) 13:17 質問[未読]
【76806】Re:シート1とシート2の内容で一致するもの... β 15/3/17(火) 15:18 発言[未読]
【76815】Re:シート1とシート2の内容で一致するもの... あや 15/3/18(水) 8:57 質問[未読]
【76816】Re:シート1とシート2の内容で一致するもの... β 15/3/18(水) 9:09 発言[未読]
【76817】Re:シート1とシート2の内容で一致するもの... β 15/3/18(水) 9:20 発言[未読]
【76818】Re:シート1とシート2の内容で一致するもの... β 15/3/18(水) 9:37 発言[未読]
【76822】Re:シート1とシート2の内容で一致するもの... あや 15/3/18(水) 18:30 質問[未読]
【76823】Re:シート1とシート2の内容で一致するもの... β 15/3/18(水) 19:48 発言[未読]
【76825】Re:シート1とシート2の内容で一致するもの... あや 15/3/19(木) 9:38 質問[未読]
【76826】Re:シート1とシート2の内容で一致するもの... あや 15/3/19(木) 10:03 質問[未読]
【76827】Re:シート1とシート2の内容で一致するもの... β 15/3/19(木) 11:12 発言[未読]
【76828】Re:シート1とシート2の内容で一致するもの... あや 15/3/19(木) 15:33 質問[未読]
【76829】Re:シート1とシート2の内容で一致するもの... β 15/3/19(木) 15:46 発言[未読]
【76830】Re:シート1とシート2の内容で一致するもの... あや 15/3/19(木) 16:14 質問[未読]
【76831】Re:シート1とシート2の内容で一致するもの... あや 15/3/19(木) 16:17 質問[未読]
【76834】Re:シート1とシート2の内容で一致するもの... β 15/3/19(木) 17:28 発言[未読]
【76835】Re:シート1とシート2の内容で一致するもの... あや 15/3/19(木) 18:02 質問[未読]
【76836】Re:シート1とシート2の内容で一致するもの... β 15/3/19(木) 18:14 発言[未読]
【76838】Re:シート1とシート2の内容で一致するもの... あや 15/3/19(木) 19:15 質問[未読]
【76837】Re:シート1とシート2の内容で一致するもの... β 15/3/19(木) 19:07 発言[未読]
【76839】Re:シート1とシート2の内容で一致するもの... あや 15/3/19(木) 19:33 質問[未読]
【76840】Re:シート1とシート2の内容で一致するもの... β 15/3/19(木) 19:50 発言[未読]
【76841】Re:シート1とシート2の内容で一致するもの... あや 15/3/19(木) 20:04 質問[未読]
【76842】Re:シート1とシート2の内容で一致するもの... あや 15/3/19(木) 20:11 お礼[未読]
【76843】Re:シート1とシート2の内容で一致するもの... β 15/3/19(木) 20:14 発言[未読]
【76845】Re:シート1とシート2の内容で一致するもの... あや 15/3/23(月) 10:42 質問[未読]
【76846】Re:シート1とシート2の内容で一致するもの... β 15/3/23(月) 19:26 発言[未読]
【76849】Re:シート1とシート2の内容で一致するもの... あや 15/3/24(火) 10:11 質問[未読]
【76851】Re:シート1とシート2の内容で一致するもの... β 15/3/24(火) 13:36 発言[未読]
【77107】Re:シート1とシート2の内容で一致するもの... あや 15/5/22(金) 9:38 質問[未読]
【77110】Re:シート1とシート2の内容で一致するもの... β 15/5/22(金) 13:23 発言[未読]
【77111】Re:シート1とシート2の内容で一致するもの... β 15/5/22(金) 14:41 発言[未読]
【77112】Re:シート1とシート2の内容で一致するもの... あや 15/5/22(金) 15:35 質問[未読]
【77114】Re:シート1とシート2の内容で一致するもの... β 15/5/22(金) 17:57 発言[未読]
【77115】Re:シート1とシート2の内容で一致するもの... あや 15/5/22(金) 19:30 質問[未読]
【77116】Re:シート1とシート2の内容で一致するもの... β 15/5/22(金) 19:47 発言[未読]
【77144】Re:シート1とシート2の内容で一致するもの... あや 15/5/26(火) 10:11 質問[未読]
【77145】Re:シート1とシート2の内容で一致するもの... β 15/5/26(火) 12:04 発言[未読]
【77153】Re:シート1とシート2の内容で一致するもの... β 15/5/27(水) 22:49 発言[未読]
【77157】Re:シート1とシート2の内容で一致するもの... あや 15/5/28(木) 14:05 質問[未読]
【77158】Re:シート1とシート2の内容で一致するもの... β 15/5/28(木) 16:48 発言[未読]
【77159】Re:シート1とシート2の内容で一致するもの... あや 15/5/28(木) 19:57 質問[未読]
【77160】Re:シート1とシート2の内容で一致するもの... β 15/5/28(木) 20:31 発言[未読]
【77165】Re:シート1とシート2の内容で一致するもの... あや 15/5/29(金) 19:16 質問[未読]
【77166】Re:シート1とシート2の内容で一致するもの... β 15/5/29(金) 21:40 発言[未読]
【77167】Re:シート1とシート2の内容で一致するもの... β 15/5/29(金) 21:43 発言[未読]
【77168】Re:シート1とシート2の内容で一致するもの... β 15/5/30(土) 6:17 発言[未読]
【77170】Re:シート1とシート2の内容で一致するもの... あや 15/6/1(月) 14:17 質問[未読]
【77171】Re:シート1とシート2の内容で一致するもの... β 15/6/1(月) 15:44 発言[未読]
【77172】Re:シート1とシート2の内容で一致するもの... あや 15/6/1(月) 16:37 質問[未読]
【77174】Re:シート1とシート2の内容で一致するもの... β 15/6/1(月) 17:11 発言[未読]
【77175】Re:シート1とシート2の内容で一致するもの... β 15/6/1(月) 20:28 発言[未読]
【76805】Re:シート1とシート2の内容で一致するもの... あや 15/3/17(火) 13:31 質問[未読]
【76809】Re:シート1とシート2の内容で一致するもの... β 15/3/17(火) 17:14 発言[未読]
【76767】Re:シート1とシート2の内容で一致するもの... β 15/3/10(火) 18:13 発言[未読]
【76790】Re:シート1とシート2の内容で一致するもの... あや 15/3/12(木) 21:01 お礼[未読]
【76754】Re:シート1とシート2の内容で一致するもの... マナ 15/3/9(月) 19:27 発言[未読]
【76762】Re:シート1とシート2の内容で一致するもの... あや 15/3/10(火) 11:24 お礼[未読]

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