[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『重複しない文字列の抽出〜結合』(KAO)
あきらめていたことができるような気がしてお尋ねします。
C列の同じ名前の中からD列の重複しない文字列のみ抽出して
A列の同じ名前のB列に結合して書き出すことは可能でしょうか?
例)
A B C D エミ 命,123,りんご ミホ みかん,561,果物 ミホ 561,ミカン エミ 命▼愛,119 エミ 123,119,りんご,愛 ミホ 果物,トマト▼みかん ミホ トマト,ミカン
・B列の文字列間の結合は「,」でお願いします
・D列の文字列間の結合は「,」「▼」が使用されてます
・A列に重複はありません(空欄なし)
・C列は重複があり順不同になっています(通常1万行までです)
よろしくお願いします。
< 使用 Excel:Excel2010、使用 OS:Windows7 >
こんな感じでどうでしょうか? Sub KAO重複抽出() Dim a Dim dic As Object, k As String, x Dim r As Long Set dic = CreateObject("Scripting.Dictionary") a = Range("C1", Cells(Rows.Count, "C").End(xlUp)).Resize(, 2).Value For r = 1 To UBound(a, 1) k = a(r, 1) If Not dic.exists(k) Then dic.Add k, CreateObject("Scripting.Dictionary") For Each x In Split(Replace(a(r, 2), "▼", ","), ",") If dic(k).exists(x) Then dic(k)(x) = "重複" Else dic(k).Add x, "" End If Next x Next r Range("B:B").ClearContents a = Range("A1", Cells(Rows.Count, "A").End(xlUp)).Resize(, 2).Value For r = 1 To UBound(a, 1) k = a(r, 1) If dic.exists(k) Then For Each x In dic(k).keys If dic(k)(x) <> "重複" Then a(r, 2) = a(r, 2) & "," & x Next x End If a(r, 2) = Mid(a(r, 2), 2) Next r Range("A1").Resize(UBound(a, 1), 2).Value = a End Sub ※1533細かいところ修正 (稲葉) 2014/11/17(月) 15:22
やはりできちゃうんですね、こんなことが..できる人にはですが^^。
データ行が2行目からなら2箇所の >For r=1< の「1」を「2」で
いいんですよね?
初めて目にする単語^^?も多くとうてい中身わかっていませんし、
実際のデータで確認できる環境まで時間がかかりそうなので、
先ずはお礼までとさせていただきます。
(KAO) 2014/11/17(月) 16:33
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.