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

Excelでテキスト文字列からn番目の単語を抽出する

Author: Xiaoyang Last Modified: 2025-08-06

テキスト文字列や文のリストがあり、そのリストから特定のn番目の単語を下のスクリーンショットのように抽出したいとします。この記事では、Excelでこの作業を解決するためのいくつかの方法を紹介します。

doc-extract-nth-word-1


数式を使用してテキスト文字列からn番目の単語を抽出・取得する

このタスクに対処するために、TRIM、MID、SUBSTITUTE、REPT、LEN関数を組み合わせた数式を使用できます。汎用的な構文は次の通りです:

=TRIM(MID(SUBSTITUTE(文字列," ",REPT(" ",LEN(文字列))), (N-1)*LEN(文字列)+1, LEN(文字列)))
  • 文字列: 単語を抽出したいテキスト文字列またはセルの値です。
  • N: 抽出したい単語の番号です。

1. 次の数式を空白のセルにコピーまたは入力してください:

=TRIM(MID(SUBSTITUTE(A2," ",REPT(" ",LEN(A2))), (B2-1)*LEN(A2)+1, LEN(A2)))

注釈: 上記の数式では、A2は使用したいテキスト文字列が含まれているセルで、B2は抽出したい単語の番号です。これは数字として直接入力することもできます。

2. そして、フィルハンドルを下にドラッグして他のセルにもこの数式を適用すると、以下のスクリーンショットのようにすべての特定のn番目の単語が抽出されます:

doc-extract-nth-word-2


数式の説明:
  • 1. SUBSTITUTE(A2," ",REPT(" ",LEN(A2))):
  • REPT(" ",LEN(A2)): このREPT関数は、特定の回数(セルA2のテキスト長さ)だけスペース文字を繰り返すために使用され、多くのスペース文字が生成されます;
  • SUBSTITUTE(A2," ",REPT(" ",LEN(A2))): SUBSTITUTE関数は、セルA2内の各スペース文字をREPT関数によって生成された多数のスペース文字に置き換え、これにより各単語間に多数のスペースを持つテキスト文字列が生成されます。
  • この部分は、MID関数のtext引数として再編成されています。
  • 2. (B2-1)*LEN(A2)+1: この数式は、セルA2内のテキスト文字列におけるn番目の単語の開始位置を返します。これはMID関数のstart_num引数です。
  • 3. MID(SUBSTITUTE(A2," ",REPT(" ",LEN(A2))), (B2-1)*LEN(A2)+1, LEN(A2)): このMID関数は、上記の数式によって返される引数に基づいて、セルA2内のテキスト文字列からn番目の単語を抽出します。
  • 4. TRIM(): このTRIM関数は、単語間のすべての余分なスペース文字を削除します。

ヒント: 単語間に複数のスペース文字がある場合、上記の数式は正しく動作しません。このような場合、もう一つのTRIM関数をSUBSTITUTE関数内に入れ子にする必要があります。次の数式を使用してください:

=TRIM(MID(SUBSTITUTE(TRIM(A2)," ",REPT(" ",LEN(A2))), (B2-1)*LEN(A2)+1, LEN(A2)))

doc-extract-nth-word-3


ユーザー定義関数を使用してテキスト文字列からn番目の単語を抽出・取得する

上記の数式が少し理解しにくい場合は、ここではユーザー定義関数を紹介します。以下のコードを使用することで、テキスト文字列からn番目の単語を抽出することができます。次のように操作してください:

1. ALT + F11キーを押してMicrosoft Visual Basic for Applicationsウィンドウを開きます。

2. [挿入] > [モジュール]をクリックし、モジュールウィンドウに次のコードをコピーして貼り付けます。

Function FindWord(Source As String, Position As Integer)
'Update by Extendoffice
Dim arr() As String
arr = VBA.Split(Source, " ")
xCount = UBound(arr)
If xCount < 1 Or (Position - 1) > xCount Or Position < 0 Then
    FindWord = ""
Else
    FindWord = arr(Position - 1)
End If
End Function

3. その後、コードモジュールを保存して閉じ、結果を出力したい空白のセルにこの数式: =findword(A2,B2) を入力します:

注釈: この数式では、A2は使用したいテキスト文字列が含まれているセルで、B2は抽出したい単語の番号です。これは数字として直接入力することもできます。

4. そして、必要に応じて数式を他のセルにドラッグして結果を得てください。スクリーンショットをご覧ください:

doc-extract-nth-word-4


強力な機能を使用してテキスト文字列からn番目の単語を抽出・取得する

Kutools for Excelを持っている場合、それはほとんどのExcelユーザー向けに一般的に使用される複数の数式をサポートしています。セルからN番目の単語を抽出するユーティリティを使用すれば、指定したn番目の単語を可能な限り迅速に抽出できます。 無料試用版のKutools for Excelをダウンロードするにはここをクリック!


関連する関数:

  • REPT:
  • REPT関数は、指定された回数だけ文字を繰り返すために使用されます。
  • SUBSTITUTE:
  • SUBSTITUTE関数は、テキスト文字列内のテキストまたは文字を別のテキストまたは文字に置き換えます。
  • TRIM:
  • TRIM関数は、テキスト文字列からすべての余分なスペースを削除し、単語間には1つのスペースのみを残します。
  • MID:
  • MID関数は、テキスト文字列の中間から特定の文字を返します。
  • LEN:
  • LEN関数は、テキスト文字列内の文字数を返します。

その他の記事:

  • 複数行のセルから最後の行のテキストを抽出する
  • 改行で区切られたテキスト文字列から最後の行のテキストを抽出するには、通常、これを解決する直接的な方法はありません。この記事では、Excelでこのタスクを処理するための数式を紹介します。

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

Kutools for Excel - 群衆から一歩抜け出すためのお手伝い

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

Kutools for Excelは300以上の機能を誇り、必要なものがクリック一つで利用可能です...


Office Tab - Microsoft Office(Excel含む)でタブ形式の読み書きを可能に

  • 数十の開いている文書間を1秒で切り替え!
  • 毎日数百回のマウスクリックを減らし、マウス疲れとはおさらば!
  • 複数の文書を閲覧・編集する際の作業効率を50%向上します。
  • Chrome、Edge、Firefoxのように、Office(Excel含む)に効率的なタブをもたらします。