• ベストアンサー

複数文字列から共通文字列の抽出処置

お世話になっています。 標題の件に付いて教えて頂きたく質問板に投稿させて頂きました。 以下の様な複数の文字列があり各文字列で共通の文字列のみを抽出するといった処理を行いたいのですが可能でしょうか?? 例(1) 赤鉛筆を11/1に購入 青鉛筆を11/5に購入 黄鉛筆を11/20に購入 →鉛筆を購入 例(2) 今日の天気は晴れです 今日の天気は曇りです 今日の天気は雨です →今日の天気はです という様な感じです。 文字列には決まったパターン等はありません。 申し訳ありませんがご教授下さい。 よろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

こんにちは! Excelだとして・・・ No.1さんと同じ疑問を持ちつつやってみました。 ↓の画像のようにA列1行目から文字列データがあり、B1セルに結果を表示させるとします。 ↓のコードでマクロを試してみてください。 Sub Sample1() Dim i As Long, k As Long, lastRow As Long, cnt As Long Dim str As String, buf As String Application.ScreenUpdating = False lastRow = Cells(Rows.Count, "A").End(xlUp).Row Range(Cells(1, "A"), Cells(lastRow, "A")).Copy Range("D1") Range(Cells(1, "E"), Cells(lastRow, "E")).Formula = "=LEN(D1)" Range("D1").CurrentRegion.Sort key1:=Range("E1"), order1:=xlDescending, Header:=xlNo For k = 1 To Len(Range("D1")) cnt = 1 For i = 2 To lastRow str = Mid(Range("D1"), k, 1) If InStr(Cells(i, "D"), str) > 0 Then cnt = cnt + 1 End If Next i If cnt = lastRow And InStr(buf, str) = 0 Then buf = buf & str End If Next k Range("B1") = buf Range("D:E").Clear Application.ScreenUpdating = True End Sub こんな感じではどうでしょうか?m(_ _)m

Rupic
質問者

お礼

どうも親切にありがとうございました!!! とても参考になりました!

その他の回答 (1)

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.1

補足願います 質問1 例1の場合、共通文字は「鉛筆を11/に購入」ではないのですか? 数字と記号は除外と言う事でしょうか? 質問2 文字の登場順番も見ますか? 例えば、例1の文字列に「筆入れと鉛を購う」と言う文字列も有った場合、共通文字列は「筆入」?「鉛筆を購入」?

関連するQ&A