1つのセルの中に「▲▲ ■■」のように2つ以上の結果を出させるのは合理的な方法がないので,C列に1つ目のヒットした単語,D列に2つ目の単語,のように表示させます。
C2に
=IF(COLUMN(A2)>SUMPRODUCT(COUNTIF($B2,"*"&OFFSET($A$1,0,0,COUNTA($A:$A),1)&"*")),"",INDEX($A:$A,SMALL(IF(ISNUMBER(FIND(OFFSET($A$1,0,0,COUNTA($A:$A),1),$B2)),ROW(OFFSET($A$1,0,0,COUNTA($A:$A),1)),999),COLUMN(A2))))
と記入してコントロールキーとシフトキーを押しながらEnterして入力する
C2を右に下にコピーしておく。
#どうしても1つのセルに結果を出させたいときは,マクロを使って自作の関数を作成した方が簡単です。
参考:
ALT+F11を押してVBE画面を出す
挿入メニューから標準モジュールを挿入する
現れたシートに下記をコピー貼り付ける
Private Function myS(a As Range, b As Range)
Dim Target As Range
Dim h As Range
Dim res As String
Set a = a.Cells(1)
Set Target = Application.Intersect(b, b.Parent.UsedRange)
For Each h In Target
If InStr(a, h) Then
res = res & h & " "
End If
Next
myS = Application.Trim(res)
End Function
ファイルメニューから終了してエクセルに戻り,セルに
=mys(B2,A:A)
のように記入して計算させる。
お礼
ありがとうございます!できました! 両方試してみたのですが、マクロの方は処理が重すぎて現実的では無さそうなので関数の方で行きたいと思います。 ただ、間に列を増やすとおかしくなってしまいました。 A列 B列 C列 D列 単語 文章 とすると関数の「A列」を「B列」に、「B列」を「D列」に書き換えてもうまくいきません・・・ でも本当に助かりました!