〔共通する要素をコンピュータに抽出させる方法〕 


文字の組み合わせで同じ物を、自動的に選び出す方法を教えて。 
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は誰なのかを自動的に探す手法があれば、どうかご教示下さい!

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2009/03/22 18:08:28
  • 終了:2009/03/29 18:10:03

回答(2件)

id:pahoo No.1

pahoo回答回数5960ベストアンサー獲得回数6332009/03/22 18:52:28

ポイント35pt

まず、比較する各々のデータ構造を合わせなければなりません。

たとえば、Excelを使い、一方のID一覧をA列に、他方のID一覧をB列に入れたとします。ここまで用意してやれば、あとは「Excel で 2 つの列のデータを比較して重複を見つける方法 」によって、重複しているIDを調べることができます。

id:DK4R

Excelを使えば、列に手動で情報を打ち込んだら、後は自動で抽出してくれるんですね。なるほど。

〔これから回答される方への御願い〕 

第一段階がデータを手動で入力する方法は分かったので、2つのデータをコピペして(自動)入力する方法があれば、教えてください。

2009/03/22 19:06:30
id:Mook No.2

Mook回答回数1312ベストアンサー獲得回数3912009/03/23 01:33:14

ポイント35pt

それぞれの 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を比較して結果を表示します。

http://kiyopon.sakura.ne.jp/vba/index.htm

id:DK4R

具体的に有難うございます!

IT音痴なんで、作業に何日かかるか分かりませんが頑張ってみます!

2009/03/23 01:37:02

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません