メインコンテンツへスキップ

テキスト文字列から最初のまたは最後の2つまたはn個の単語を抽出するにはどうすればよいですか?

Author: Xiaoyang Last Modified: 2025-08-06

Excelで大量のテキストデータを扱う場合、各セル内の特定の単語(最初のいくつかの単語や最後の単語、特定の位置にある単語など)を抽出する必要がよくあります。一般的なシナリオとしては、複数の単語を持つテキスト入力が含まれるセルから名前、住所、キーワード、ユニークな識別子などを抽出することが挙げられます。特にデータがスペースで区切られている場合にそうです。例えば、文や製品コードが含まれたセルがあり、そこから最初の3つの単語や最後の2つの単語だけを取り出して後続処理に使用したい場合があります。Excelにはこれを行うための直接的な組み込み関数はありませんが、柔軟な単語抽出を実現するための方法は複数あり、それぞれ異なるデータサイズやニーズに適しています。この記事では、最初、最後、またはn番目の単語をExcelのテキスト文字列から効率的に抽出するための数式、実用的なツール、および追加の自動化技術を紹介します。

extract first or last two or n words

数式を使用してテキスト文字列から最初の2つまたはn個の単語を抽出する

数式を使用してテキスト文字列から最後の2つまたはn個の単語を抽出する

便利な機能を使用してテキスト文字列から最初またはN番目の単語を抽出する

VBAマクロを使って単語を抽出する(最初、最後、またはN番目の単語)

Power Queryを使用して単語を抽出する(分割と再結合)


数式を使用してテキスト文字列から最初の2つまたはn個の単語を抽出する

セル値から最初のいくつかの単語を抽出するには、以下の数式を使用できます。これは、一貫した単語区切り記号(スペースなど)がある場合に特に役立ちます。例えば、セルから最初の3つの単語を取り出したい場合です。これらの数式は簡単に適用でき、中程度のサイズのデータセットに対してうまく動作し、先頭の任意の数の単語を抽出するために適応させることができます。

次のいずれかの数式を空白のセル(C2など)に入力し、フィルハンドルを下にドラッグして関連するすべての行に数式を適用してください。以下に示すスクリーンショットのように、各テキスト文字列から必要な数の先頭の単語が抽出されます。

=TRIM(LEFT(A2, FIND("^",SUBSTITUTE(A2, " ", "^",3)&"^")))

apply a formula to extract first two or n words

説明とヒント:

1. 上記のサンプル数式では、A2は元のテキストが含まれているセルを指し、3は抽出したい単語の数です。必要に応じてこれらの参照を変更してください。

2. 抽出したい単語の数が行ごとに異なり、それがB列で指定されている場合、次の柔軟な数式を使用できます:

=TRIM(LEFT(SUBSTITUTE(A2," ",REPT(" ",1000),B2),1000))

apply a formula to extract first n words by cell value

この数式では、セル(例:B2)を参照して動的に抽出する単語の数を指定できます。B2には有効な整数が含まれていることを確認してください。

3. テキストが他の区切り文字(カンマやセミコロンなど)で区切られている場合は、スペース文字(" ")を特定の区切り文字に置き換えることで数式を調整できます。

4. 先頭や末尾の二重スペースや複数の連続するスペースには注意が必要です。これらは結果に影響を与える可能性があります。余分なスペースを削除するためにTRIMを適用すると良いでしょう。

5. セル内の合計単語数が抽出しようとしている数よりも少ない場合、この数式はエラーなく全文を返します。


数式を使用してテキスト文字列から最後の2つまたはn個の単語を抽出する

テキスト文字列から最後の単語(最後の2つや最後のn個の単語など)を抽出するには、次の数式が役立ちます。この方法は、姓、ファイル拡張子、またはテキストセルの末尾にある識別子などの末尾の単語を一貫して抽出する必要があるデータセットに対して効果的です。

結果を表示したい空白のセルに以下の数式をコピーして貼り付けてください。数式を入力したら、フィルハンドルを下にドラッグして他の行にも適用します。

=MID(A2,FIND("@",SUBSTITUTE(A2," ","@",LEN(A2)-LEN(SUBSTITUTE(A2," ",""))-(3-1)))+1,LEN(A2))

apply a formula to extract last two or n words

注記と実践のヒント:
  • A2: テキストを含むソースセル。
  • 3: 戻したい最後の単語の数。最後の5つの単語を取得するには、数式内の3を5に変更してください。
  • セル内の合計単語数が要求された数よりも少ない場合、そのセル内の利用可能なすべての単語が返されます。
  • データが別の区切り文字(カンマ、タブなど)で区切られている場合は、それに応じて数式を調整してください。
  • データ内の複雑または不規則なスペースにより、結果が不正確になることがあります。可能であれば、数式を適用する前にテキストを整理してください。

便利な機能を使用してテキスト文字列から最初またはN番目の単語を抽出する

もしもテキスト文字列から最初の単語や特定の(N番目の)単語を抽出する必要があり、複雑な数式を暗記したり編集したりすることなく解決したい場合、Kutools for Excelを使用できます。セル内のN番目の単語を抽出する機能を使うと、特定の単語位置を簡単に選択でき、時々の使用だけでなく繰り返しの作業にも適しています。このアプローチは、手動での数式入力なしにエラーのリスクを最小限に抑えた迅速でメニュー駆動型のソリューションを求めている場合にお勧めです。

Kutools for Excelは、300以上の高度な機能を提供し、複雑なタスクを簡素化し、創造性と効率を向上させます。 AI機能と統合され、Kutoolsは正確にタスクを自動化し、データ管理を容易にします。Kutools for Excelの詳細情報...無料トライアル...

Kutools for Excelをインストールした後は、次のように進めてください:

1. 抽出した結果を表示したいセルを選択します。その後、スクリーンショットに示されているように、Kutools > 関数ヘルパー > 関数ヘルパーに移動します:

click Formula Helper feature of kutools

2. 関数ヘルパーダイアログで、次のステップを行います:

  • 数式タイプのドロップダウンリストから「テキスト」を選択します。
  • 数式リストボックスから「セル内のN番目の単語を抽出」を選択します。
  • Cellテキストボックスにソースセルを指定し、The Nthテキストボックスに希望する単語位置(例:2なら2番目の単語)を入力します。

specify the cell references in the dialog box

3. OKをクリックして結果を返し、同じロジックを残りのリストに適用するためにフィルハンドルを下にドラッグします。図解をご覧ください:

drag down the formula to other cells

この方法は、抽出要件が頻繁に変わる場合や、毎回カスタム数式を作成する代わりにガイド付きインターフェースを望む場合に適しています。


VBAマクロで単語を抽出する(最初、最後、またはN番目の単語)

大規模または頻繁に更新されるデータセットを処理する場合、VBAマクロは数式のみよりも柔軟性と自動化を提供します。VBAを使用することで、多くのセルを素早く処理できる再利用可能なツールを作成でき、ニーズに基づいて抽出する単語や単語グループをカスタマイズできます。複雑なネストされた数式を避けたい場合や、定期的に同じ方法でテキストを操作する必要がある場合に特に便利です。

典型的なシナリオ:インポートされたテキストの大量抽出、バッチクリーニング、標準化されたレポートの準備。

1. VBAエディターを開くには、Developer > Visual Basic をクリックします。Microsoft Visual Basic for Applicationsウィンドウで、Insert > Moduleを選択し、新しいモジュールに次のコードを貼り付けます:

Sub ExtractWord()
    Dim Rng As Range
    Dim Cell As Range
    Dim WordPos As Integer
    Dim Words() As String
    Dim ExtractedWord As String
    
    On Error Resume Next
    xTitleId = "KutoolsforExcel"
    
    Set Rng = Application.Selection
    Set Rng = Application.InputBox("Select range to extract word from", xTitleId, Rng.Address, Type:=8)
    
    WordPos = Application.InputBox("Enter which word number to extract (1=first,2=second, etc., or -1 for last)", xTitleId, 1, Type:=1)
    
    Application.ScreenUpdating = False
    
    For Each Cell In Rng
        Words = Split(Application.Trim(Cell.Value), " ")
        
        If WordPos = -1 Then
            If UBound(Words) >= 0 Then
                ExtractedWord = Words(UBound(Words))
            Else
                ExtractedWord = ""
            End If
        ElseIf WordPos >= 1 And WordPos <= UBound(Words) + 1 Then
            ExtractedWord = Words(WordPos - 1)
        Else
            ExtractedWord = ""
        End If
        
        Cell.Offset(0, 1).Value = ExtractedWord
    Next Cell
    
    Application.ScreenUpdating = True
    
    MsgBox "Extraction complete! Results placed in the column to the right.", vbInformation, xTitleId
End Sub

2マクロを実行するには、 Run button Runボタンをクリックするか、 F5キーを押しますマクロはデータ範囲を選択することを促し、どの単語位置を抽出するか(例えば、最初の単語なら1、最後の単語なら-1)を尋ね、隣接する右側の列に抽出された単語を配置します。区切り文字がスペースであることを確認するか、必要に応じて Split 他の区切り文字に対応するよう関数を調整してください。

このVBAアプローチは、繰り返しの大規模な抽出を非常に迅速に行い、数式ベースのソリューションが煩雑になる場合に理想的です。注意:常にワークブックを保存してからマクロを実行し、セキュリティ設定でマクロが有効になっていることを確認してください。


Power Queryを使用して単語を抽出する(分割と再結合)

大規模なテーブルや定期的なインポート/エクスポートタスクを管理する場合、Power Queryはテキスト文字列から単語を抽出して操作するための堅牢な代替手段を提供します。Power Queryはデータタブの「データの取得と変換」として見つかり、視覚的にテキストを区切り文字(スペース、カンマなど)で分割し、必要な単語を抽出してからデータを再結合したりExcelに戻したりすることができます。このプロセスは非常に繰り返しやすく、数百または数千の行を扱う場合に大規模なデータクリーニングに適しています。

主な利点:定期的な使用における一貫性、視覚的なインターフェース、単語位置の要件が変わった際に調整が容易。

操作手順:

  1. データ範囲を選択し、データ > 表/範囲から を選択してデータをPower Queryに読み込みます。求められた場合は、表を作成/確認します。
  2. Power Queryエディターで、テキストのある列を選択します。
  3. 列の分割 > 区切り文字で をクリックします。
    a screenshot showing the By Delimiter option on the ribbon
  4. スペースを選択するかカスタム区切り文字を入力し、全ての区切り文字の出現箇所で分割を選択してからOKをクリックします。
    a screenshot of specifiying the delimiter
  5. テキストの各単語は独自の列(Column1、Column2など)に表示されます。最初の2つの単語を抽出したい場合は、分割された単語を再結合します。対応する列を選択し、ヘッダーを右クリックして、コンテキストメニューから「列の結合」を選択します。
    a screenshot showing the Merge Columns option in the context menu
  6. 好みの区切り文字(スペースやカンマなど)を選択し、OKをクリックします。
    a screenshot of specifying a delimiter for combining text
  7. 最後に、「閉じて読み込む」をクリックして結果を現在のワークブックの新しいワークシートに読み込みます。

Power Queryは、基盤となるテーブルが変更された場合でも一貫した結果を得るために、クエリを更新するだけでプロセスを再利用でき、数式やマクロの手動再適用なしに結果を得られます。Power Queryが生成する列数を確認し、短いテキスト文字列で不足している単語を考慮に入れてください。


関連記事:

  • セルから複数行を抽出する
  • 改行で区切られたテキスト文字列のリストを持っている場合(Alt + Enterキーを押してテキストを入力した際に発生)、これらの行のテキストを以下のスクリーンショットに示されているように複数のセルに抽出したいと考えています。Excelでこれを数式を使って解決するにはどうすればよいでしょうか?
  • Excelでテキスト文字列から部分文字列を抽出する
  • Excelで部分文字列をテキスト文字列から抽出する必要があることはよくありますが、Excelにはこれを直接行う関数はありません。しかし、LEFT、RIGHT、MID、SEARCH関数を使えば、必要な部分文字列を様々な形で抽出することができます。
  • 括弧内のテキスト文字列から括弧間のテキストを抽出する
  • テキスト文字列内に括弧で囲まれた部分がある場合、以下のスクリーンショットに示されているように括弧間のすべてのテキスト文字列を抽出したいとします。Excelでこのタスクを迅速かつ簡単に解決するにはどうすればよいでしょうか?
  • Excelで特定の文字で始まる単語を抽出する
  • たとえば、各セルで特定の文字「=」で始まる単語を抽出する必要がある場合、以下のスクリーンショットに示されているように、Excelでこれを迅速かつ簡単に解決するにはどうすればよいでしょうか?

最高のオフィス生産性ツール

🤖 Kutools AI Aide:データ分析を革新:インテリジェント実行   |  コード生成  |  カスタム数式の作成  |  データを分析してグラフを生成  |  Kutools Functions を呼び出す
人気機能重複の検索・ハイライト・マーキング   |  空白行を削除   |  データを失わず列やセルを統合   |   丸める ...
スーパーLOOKUP複数条件VLOOKUP   複数値VLOOKUP  |  複数シートの検索  |  ファジーマッチ ....
高度なドロップダウンリストすばやくドロップダウンリストを作成   |  依存型ドロップダウンリスト   |  複数選択ドロップダウンリスト ....
列の管理:特定数の列を追加  | 列を移動  | 非表示列の表示状態を切り替え |  範囲と列の比較 ...
注目機能グリッドフォーカス   |  デザインビュー  |  強化された数式バー   ワークブック&ワークシートの管理   |  オートテキスト ライブラリ (Auto Text)   |  日付ピッカー   |  データの統合   |  セルの暗号化/復号化    リスト送信で電子メールを送信   |  スーパーフィルター   |   特殊フィルタ(太字/斜体/取り消し線でフィルタ...)
トップ15ツールセット12 種類のテキストツールテキストの追加特定の文字を削除など)  |  50 種以上のグラフ タイプガントチャートなど)  |  40を超える実用的な 数式誕生日に基づいて年齢を計算する、など)  |  19種の 挿入ツールQRコードの挿入パスから画像の挿入など)  |  12種類の 変換ツール単語に変換する通貨変換など)  |  7つの 結合&分割ツール高度な行のマージセルの分割など)  |  ...さらに多数
お好きな言語でKutoolsを使用できます ― 英語、スペイン語、ドイツ語、フランス語、中国語など40以上に対応!

Kutools for ExcelでExcelスキルを強化し、かつてない効率を体験しましょう。 Kutools for Excelは300以上の高度な機能で生産性向上と時間短縮を実現します。最も必要な機能を今すぐ取得...


Office TabはOfficeにタブ表示を追加し、作業効率を大幅に向上させます

  • Word、Excel、PowerPointでタブ編集とタブ閲覧を有効にします
  • 同じウィンドウ内の新しいタブで複数のドキュメントを開いたり作成したりできます。新しいウィンドウを開く必要はありません。
  • 生産性が50%向上し、1日に何百回ものマウスクリックも削減できます!