人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

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

●質問者: DK4R
●カテゴリ:コンピュータ インターネット
✍キーワード:コンピュータ ブクマ 名称 抽出 自動
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● pahoo
●35ポイント

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

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

◎質問者からの返答

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

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

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


2 ● Mook
●35ポイント

それぞれの 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

◎質問者からの返答

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

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ