文字の組み合わせで同じ物を、自動的に選び出す方法を教えて。
IDなどが重複してたら、その重複IDがどれかを知りたいんです。
(差分の抽出、って言うような事なのかもしれませんが、IT音痴なので、名称はよく分かりません)
たとえば、これ http://b.hatena.ne.jp/entry/http://mainichi.jp/area/kanagawa/news/20090319ddlk14040128000c.htmlと これ http://b.hatena.ne.jp/entry/http://blackshadow.seesaa.net/article/116000412.htmlで、共通してブクマしてるIDは誰なのかを自動的に探す手法があれば、どうかご教示下さい!
まず、比較する各々のデータ構造を合わせなければなりません。
たとえば、Excelを使い、一方のID一覧をA列に、他方のID一覧をB列に入れたとします。ここまで用意してやれば、あとは「Excel で 2 つの列のデータを比較して重複を見つける方法 」によって、重複しているIDを調べることができます。
それぞれの ID を A列、B列に入れ比較するマクロです。
Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) '---------------------------------------------------------------- Sub CompBookmarker() '---------------------------------------------------------------- getBookmarker 1, "http://b.hatena.ne.jp/entry/http://mainichi.jp/area/kanagawa/news/20090319ddlk14040128000c.html" getBookmarker 2, "http://b.hatena.ne.jp/entry/http://blackshadow.seesaa.net/article/116000412.html" Dim lastRow As Long lastRow = Range("A" & Rows.Count).End(xlUp).Row Dim r As Range Dim sc As Long For i = 1 To lastRow Set r = Columns("B:B").Find(what:=Cells(i, 1), lookat:=xlWhole) If Not r Is Nothing Then Cells(i, 1).Interior.ColorIndex = 36 r.Interior.ColorIndex = 36 sc = sc + 1 End If Next MsgBox "両方に登録しているユーザは" & sc & "人です。" End Sub '---------------------------------------------------------------- Sub getBookmarker(col As Long, url As String) '---------------------------------------------------------------- Dim ie As Object Set ie = CreateObject("InternetExplorer.application") ie.Navigate url ie.Visible = True Do While ie.Busy Sleep 500 Loop Dim obj As Object Set obj = ie.document.getElementById("bookmarked_user").getElementsByTagName("li") Dim li As Object Dim a As Object Dim r As Long r = 1 For Each li In obj Set a = li.getElementsByTagName("a") Cells(r, col).Value = a.Item(1).innerText r = r + 1 Next ie.Quit Set ie = Nothing End Sub
EXCEL を起動後、Alt+F11で表示されるウィンドウで、挿入⇒標準モジュール を行い、そこに上記のコードを置きます。
EXCEL に戻り、Alt+F8 でCompBookmarker を選び実行すると、それぞれのURLを比較して結果を表示します。
具体的に有難うございます!
IT音痴なんで、作業に何日かかるか分かりませんが頑張ってみます!
Excelを使えば、列に手動で情報を打ち込んだら、後は自動で抽出してくれるんですね。なるほど。
〔これから回答される方への御願い〕
第一段階がデータを手動で入力する方法は分かったので、2つのデータをコピペして(自動)入力する方法があれば、教えてください。