![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
Exel2007で、文章中から特定の単語を抜き出したいと考えています。
1)単語は複数あり、今後増える可能性や変更されることがあります。
2)文章は複数あり、今後増える可能性や変更されることがあります。
3)単語は文章中に複数ある場合や、全くない場合など様々です。
4)単語が見つかった場合、それを文章の横などに表示したいです。
こういった場合、どういった方法があるでしょうか?
A列 B列 C列
単語 文章 抽出した単語
●● ▲▲は□□です。 ▲▲
■■ ○○は■■です。 ■■
▲▲ ●●は□□です。 ●●
・ ▲▲は■■です。 ▲▲ ■■
・ ○○は□□です。
・ ▲▲は▲▲です。 ▲▲
よろしくお願いいたします。
No.2ベストアンサー
- 回答日時:
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列」に書き換えてもうまくいきません・・・
でも本当に助かりました!
No.4
- 回答日時:
簡単な方法として、作業用シートを設けるという方法もあります。
今仮に、元データが存在するシートがSheet1であり、Sheet2を作業用シートとして使用するものとします。
まず、Sheet2のA1セルに次の関数を入力して下さい。
=IF(AND(INDEX(Sheet1!$A:$A,ROW(Sheet1!$A$1)+COLUMN())<>"",ISNUMBER(FIND(INDEX(Sheet1!$A:$A,ROW(Sheet1!$A$1)+COLUMN()),INDEX(Sheet1!$B:$B,ROW(Sheet1!$B$1)+ROW()-1)))),ROW(Sheet1!$A$1)+COLUMN(),"")
次に、Sheet2のA1セルをコピーして、縦方向はSheet1のB列において文章を入力する欄の行数を上回るのに充分な行数、横方向はSheet1のA列において単語入力する欄の行数を上回るのに充分な列数、をカバーする範囲に貼り付けて下さい。
次に、Sheet1のC2セルに次の関数を入力して下さい。
=IF(COLUMNS($C:C)>COUNT(OFFSET(Sheet2!$1:$1,ROWS($1:2)-1,)),"",INDEX($A:$A,SMALL(OFFSET(Sheet2!$1:$1,ROWS($1:2)-1,),COLUMNS($C:C))))
次に、Sheet1のC2セルをコピーして、抽出した単語を表示させたい全てのセルに貼り付けて下さい。
以上です。
![「Excelで文章から特定の単語を抜き出し」の回答画像4](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/6/1235215_5497e5366b944/M.jpg)
No.3
- 回答日時:
こんにちは!
VBAになってしまいますが・・・一例です。
画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面が出ますので
↓のコードをコピー&ペーストしてマクロを実行してみてください。
(Alt+F8キー → マクロ → マクロ実行です)
データは2行目からあるとします。
Sub test() 'この行から
Dim i, j, k As Long
Dim str, buf As String
For j = 2 To Cells(Rows.Count, 2).End(xlUp).Row
For k = 1 To Len(Cells(j, 2))
For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
str = Mid(Cells(j, 2), k, Len(Cells(i, 1)))
If str = Cells(i, 1) And Not buf Like "*" & str & "*" Then
buf = buf & str & " "
End If
Next i
Next k
Cells(j, 3) = Trim(buf)
buf = ""
Next j
Columns(3).AutoFit
End Sub 'この行まで
こんな感じではどうでしょうか?m(_ _)m
ありがとうございます。
途中までうまく行ったのですが、「パターン文字列が不正です。」とダイアログが出て止まってしまいました。
おそらく、文章の中に同じ単語が出てくるとダメみたいです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) EXCEL VBA 単語置き換え について質問です ブック名 ぶぶぶ シート名 ししし セル V3〜 3 2023/03/08 01:41
- 大学受験 大学受験英語の勉強法についてです どうしても英語長文の勉強ができません 初めて数分で絶対にやる気がな 2 2023/05/05 00:32
- フリーソフト 文章の単語を一括で置換する方法やツール 3 2022/07/28 06:58
- Visual Basic(VBA) VBA 検索と入力 Excel ブック ぶぶぶ シート ししし 列V 検索対象の列です 最終行は、お 6 2023/05/17 01:40
- 大学受験 古文単語の暗記について。 ゴロゴで覚えるか普通の単語帳で覚えるか迷ってます。 ゴロゴはめちゃくちゃ覚 3 2022/06/17 08:40
- 大学受験 明治大学受験、もう一冊、英単語張をやるか? 4 2022/10/23 20:50
- 英語 「名詞+形容詞/現在分詞/過去分詞+to不定詞の副詞的用法」の語順について 7 2022/09/22 05:27
- 英語 瞬時に英語を組み立てたり理解するにはどうしたらいいでしょうか 3 2022/04/23 13:34
- 英語 予告の"that"と"this"の違い等について 7 2022/08/25 11:36
- 哲学 説得力を論理の強さまたは修辞の巧みさの2つに分析するにはどうすると良いでしょうか? 2 2022/06/27 05:51
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【スプレドシート】IMPORTRANGE...
-
英数字のみ全角から半角に変換
-
会社のOutlookにてメールを予約...
-
マクロ自動コピペ 貼り付ける場...
-
「生産性ソフトウェア」とは何...
-
エクセルでXLOOKUP関数...
-
会社PCのメールが更新されない
-
Microsoft familyに追加されま...
-
大学のレポート A4で1枚レポー...
-
無料のオフィス互換ソフトの使...
-
Microsoft 365 の一般法人向け...
-
outlookのメールが固まってしま...
-
マイクロソフトオフィス
-
Outlook で宛先が複数の場合の人数
-
Outlook 電源OFFの受診の仕方
-
EXCELのセルへの色づけ
-
Microsoft365の一部を解約したい
-
vb.net オブジェクト指向につい...
-
Office 2021 Professional Plus...
-
マイクロソフト オフィスについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【スプレドシート】IMPORTRANGE...
-
英数字のみ全角から半角に変換
-
Excelで空白以外の値がある列の...
-
会社PCのメールが更新されない
-
Excel 日付を比較したら、同じ...
-
マイクロソフト 一時使用コード...
-
ウィンドウィズ メモ帳で日付だ...
-
MicrosoftOfficeの1ユーザー2...
-
Microsoft Formsの「個人情報や...
-
Officeの字体
-
エクセルでXLOOKUP関数...
-
Microsoft365で自動保存が出来...
-
Outlookで、任意のメールアドレ...
-
outlookのメールが固まってしま...
-
Microsoft 365 の一般法人向け...
-
Office2021を別のPCにインスト...
-
Microsoft 365のディフェンダー...
-
Excelに貼ったリンクについて E...
-
MicrosoftOffice2019なんですが、
-
Outlook で宛先が複数の場合の人数
おすすめ情報