• 締切済み

掲示板の内容をexcelにコピーして編集

ネット上の掲示板の内容をexcelで編集しようと考えています。 例えば ----------------------------------- [1] ◎さん (コメント) (コメント)      ※1行につき1セル (コメント) (コメント) (コメント) 返信   ・     ・   ・ [1000] △さん (コメント) (コメント)      ※1行につき1セル (コメント) (コメント) (コメント) 返信 ----------------------------------- というデータがexcelにある場合、特定の◎さんの書き込み内容だけ取り出すことは可能でしょうか? コメントは文章1行につきセル1行になっており、一人の投稿者につき5~50行分くらいのセルを使用しています。 4000行あるデータから手作業で抜き出さなければならないため、ちょっと心折れ気味です。。。 もしいい方法があればご教授願います。

みんなの回答

  • bon459
  • ベストアンサー率36% (4/11)
回答No.1

もっとスッキリ処理させることが出来る方もいらっしゃると思いますが、 返信も含めて良いのであればこんなやり方は如何でしょう? 以下のマクロはA列に文字が入っていることを想定しています。 Sheet1にある文字からある人の書き込みの部分をSheet2に書き出します。 各発言の先頭行を[1]や[1000]などの[]で囲まれた5桁までの数値から始まる行で判断しています。 VBEditorでツール → 参照設定 を選択し、「Microsoft VBScript Regular Expressions 5.5」にチェックを入れる。 VBEditorに以下のコードを記述する。 (実際に使用する場合に合わせて適宜変更が必要です。) Sub Filter()   Dim reg As New RegExp   Dim ws1 As Worksheet   Dim ws2 As Worksheet   Dim lngRow As Long   Dim strPtn1 As String   Dim strPtn2 As String   Dim i As Long   Dim blnWrite As Boolean      ' 抜粋する人の書き込みの先頭判定用   strPtn1 = "^\[\d{1,5}\] ◎さん.*"   ' その他の人の書き込みの先頭判定用   strPtn2 = "^\[\d{1,5}\].*"      ' 読込む文字があるシート   Set ws1 = ThisWorkbook.Worksheets("Sheet1")   ' 抜粋を書き込むシート   Set ws2 = ThisWorkbook.Worksheets("Sheet2")      lngRow = 1      For i = 1 To 5000     reg.Pattern = strPtn1     If reg.test(ws1.Cells(i, 1)) Then       blnWrite = True     Else       reg.Pattern = strPtn2       If reg.test(ws1.Cells(i, 1)) Then         blnWrite = False       End If     End If          If blnWrite Then       ws2.Cells(lngRow, 1) = ws1.Cells(i, 1)       lngRow = lngRow + 1     End If   Next i End Sub 尚、全角スペースで字下げをしてますので半角スペースに変更してください

MrSSM
質問者

お礼

早速のご回答ありがとうございます。 試しにVBAでやってみましたが、なぜか他者のコメントが入ったり入らなかったり。。。 もう少し中身を勉強してみます。 ありがとうございました。

関連するQ&A