- 締切済み
掲示板の内容をexcelにコピーして編集
ネット上の掲示板の内容をexcelで編集しようと考えています。 例えば ----------------------------------- [1] ◎さん (コメント) (コメント) ※1行につき1セル (コメント) (コメント) (コメント) 返信 ・ ・ ・ [1000] △さん (コメント) (コメント) ※1行につき1セル (コメント) (コメント) (コメント) 返信 ----------------------------------- というデータがexcelにある場合、特定の◎さんの書き込み内容だけ取り出すことは可能でしょうか? コメントは文章1行につきセル1行になっており、一人の投稿者につき5~50行分くらいのセルを使用しています。 4000行あるデータから手作業で抜き出さなければならないため、ちょっと心折れ気味です。。。 もしいい方法があればご教授願います。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- bon459
- ベストアンサー率36% (4/11)
もっとスッキリ処理させることが出来る方もいらっしゃると思いますが、 返信も含めて良いのであればこんなやり方は如何でしょう? 以下のマクロは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 尚、全角スペースで字下げをしてますので半角スペースに変更してください
お礼
早速のご回答ありがとうございます。 試しにVBAでやってみましたが、なぜか他者のコメントが入ったり入らなかったり。。。 もう少し中身を勉強してみます。 ありがとうございました。