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

Kutools for Office — 1つのスイート、5つのツールで、もっと多くのことを成し遂げましょう。

Excelで2番目のスペースまたはコンマの前後にあるテキストを抽出するにはどうすればよいですか? 

Author Xiaoyang Last modified

Excelでテキストデータを扱う場合、複数のスペース、コンマ、またはその他の区切り文字を含む文字列に頻繁に遭遇することがあります。Excelの「テキストを列に分割」機能は、選択した区切り文字に基づいてセルの内容を個別の列に分割できますが、特定の解決策が必要になることもあります。たとえば、セル内の2番目のスペースまたはコンマの前または後ろにあるすべての情報を抽出したい場合です。この記事では、このような操作を実現するためのいくつかの実用的な方法を紹介します。具体的には、2番目のスペースやコンマの前後のテキストをターゲットにする数式、自動化や大規模なデータセット向けのVBAマクロを使用した堅牢なソリューション、そして高度なデータ前処理のためにPower Queryを使用する柔軟なオプションについて説明します。

a screenshot of the original text string and the two segments separated by the second space

数式を使用して2番目のスペースまたはコンマの前のテキストを抽出する

数式を使用して2番目のスペースまたはコンマの後のテキストを抽出する

VBAコードを使用して2番目の区切り文字(スペース/コンマ)の前または後のテキストを抽出する


数式を使用して2番目のスペースまたはコンマの前のテキストを抽出する

セル内の2番目のスペースの前にある部分を分離したい場合は、Excel関数を組み合わせて使用できます。 

1. 結果を表示したい空白のセル(例えば、セルC2)に次の数式を入力します:

=IF(ISERROR(FIND(" ",A2,FIND(" ",A2,1)+1)),A2,LEFT(A2,FIND(" ",A2,FIND(" ",A2,1)+1)))

2. Enterキーを押します。その後、数式をドラッグして適用したい行すべてにフィルハンドルを使用してください。結果として、各対応する行の2番目のスペースの前のすべてのテキストが表示されます。スクリーンショットをご覧ください:

ヒント: 2番目のコンマまたは他の区切り文字の前のテキストを抽出したい場合は、数式内のスペース文字(" ")を目的の区切り文字に置き換えてください。たとえば、コンマの場合:

=IF(ISERROR(FIND(",",A2,FIND(",",A2,1)+1)),A2,LEFT(A2,FIND(",",A2,FIND(",",A2,1)+1)))

このアプローチは、一回限りの抽出や中程度のサイズのデータセットを扱う場合に迅速かつ効率的です。ただし、テキストが非常に不規則であったり、行ごとの区切り文字の数が大きく異なる場合、追加の数式調整が必要になることがあります。また、余分なスペースや空のセルには注意してください。これらが結果に影響を与える可能性があります。重要なデータに適用する際には、出力を常に再確認してください。

a screenshot of kutools for excel ai

Kutools AIでExcelの魔法を解き放つ

  • スマート実行: セル操作、データ分析、グラフ作成を簡単なコマンドで行います。
  • カスタム数式: ワークフローを合理化するための独自の数式を生成します。
  • VBAコーディング: 簡単にVBAコードを作成し実装します。
  • 数式の解釈: 複雑な数式を簡単に理解できます。
  • テキスト翻訳: スプレッドシート内の言語障壁を取り除きます。
AI搭載ツールでExcelの機能を強化しましょう。今すぐダウンロードして、かつてないほどの効率を体験してください!

数式を使用して2番目のスペースまたはコンマの後のテキストを抽出する

セル内の2番目のスペース区切り文字の後に表示されるテキストを抽出するには、「MID」と「FIND」関数を一緒に使用できます。 

1. 対象のセル(例:D2)に次の数式を入力します:

=MID(A2, FIND(" ", A2, FIND(" ", A2)+1)+1,256)

2. Enterキーを押します。抽出したいすべての行にフィルハンドルをドラッグします。これにより、各行の2番目のスペースの後ろにあるすべての情報が表示されます。次のスクリーンショットをご覧ください:

ヒント: 2番目のコンマまたは他の任意の区切り文字の後のテキストを抽出するには、数式内のスペース文字を必要な区切り文字に置き換えてください。コンマの場合、数式は次のようになります:

=MID(A2, FIND(",", A2, FIND(",", A2)+1)+1,256)

VBAコードを使用して2番目の区切り文字(スペース/コンマ)の前または後のテキストを抽出する

大規模なデータセット、繰り返しの抽出、または自動化シナリオでは、VBAマクロを使用するのが効果的な解決策です。VBAを使用すると、2番目のスペース、コンマ、またはその他の区切り文字の前または後のテキストを抽出できます。これにより、さまざまなデータ構造での作業や、繰り返し可能なルーチンが必要な場合に効率が向上します。

1. 「開発」>「Visual Basic」を選択します。表示されたMicrosoft Visual Basic for Applicationsウィンドウで、「挿入」>「モジュール」をクリックし、次のコードをモジュールウィンドウに入力します:

Sub ExtractTextSecondDelimiter()
    Dim rng As Range
    Dim cell As Range
    Dim sep As String
    Dim direction As String
    Dim arr As Variant
    Dim result As String
    Dim pos1 As Long
    Dim pos2 As Long
    Dim xTitleId As String
    Dim outputCell As Range
    Dim i As Long
    On Error Resume Next
    xTitleId = "KutoolsforExcel"
    Set rng = Application.Selection
    Set rng = Application.InputBox("Select text range to extract from", xTitleId, rng.Address, Type:=8)
    If rng Is Nothing Then Exit Sub
    sep = Application.InputBox("Enter delimiter (e.g. space or comma)", xTitleId, " ", Type:=2)
    If sep = "" Then Exit Sub
    direction = Application.InputBox("Type 'before' for text before, 'after' for text after the 2nd delimiter", xTitleId, "before", Type:=2)
    If direction = "" Then Exit Sub
    Set outputCell = Application.InputBox("Select the first cell to output the result", xTitleId, Type:=8)
    If outputCell Is Nothing Then Exit Sub
    Application.ScreenUpdating = False
    i = 0
    For Each cell In rng
        If Not IsEmpty(cell.Value) Then
            pos1 = InStr(1, cell.Value, sep)
            If pos1 > 0 Then
                pos2 = InStr(pos1 + 1, cell.Value, sep)
                If pos2 > 0 Then
                    If LCase(direction) = "before" Then
                        result = Left(cell.Value, pos2 - 1)
                    ElseIf LCase(direction) = "after" Then
                        result = Mid(cell.Value, pos2 + Len(sep))
                    Else
                        result = cell.Value
                    End If
                Else
                    result = cell.Value
                End If
            Else
                result = cell.Value
            End If
            outputCell.Offset(i, 0).Value = result
        End If
        i = i + 1
    Next
    Application.ScreenUpdating = True
    MsgBox "Extraction completed.", vbInformation, xTitleId
End Sub

2コードを貼り付けた後、 Run button 実行 ボタンをクリックするか、 F5 キーを押して実行します。ダイアログが表示され、データ範囲を選択し、区切り文字を入力し、2回目の出現箇所の「前」または「後」のテキストを指定し、最後に出力先のセルを選択します。マクロは指定したセルに抽出結果を出力します。


最高のオフィス業務効率化ツール

🤖 Kutools AI Aide:データ分析を革新します。主な機能:Intelligent Executionコード生成カスタム数式の作成データの分析とグラフの生成Kutools Functionsの呼び出し……
人気の機能重複の検索・ハイライト・重複をマーキング空白行を削除データを失わずに列またはセルを統合丸める……
スーパーLOOKUP複数条件でのVLookup複数値でのVLookup複数シートの検索ファジーマッチ……
高度なドロップダウンリストドロップダウンリストを素早く作成連動ドロップダウンリスト複数選択ドロップダウンリスト……
列マネージャー指定した数の列を追加列の移動非表示列の表示/非表示の切替範囲&列の比較……
注目の機能グリッドフォーカスデザインビュー強化された数式バーワークブック&ワークシートの管理オートテキスト ライブラリ日付ピッカーデータの統合セルの暗号化/復号化リストで電子メールを送信スーパーフィルター特殊フィルタ(太字/斜体/取り消し線などをフィルター)……
トップ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%向上し、毎日のマウスクリック数を何百回も削減!

全てのKutoolsアドインを一つのインストーラーで

Kutools for Officeスイートは、Excel、Word、Outlook、PowerPoint用アドインとOffice Tab Proをまとめて提供。Officeアプリを横断して働くチームに最適です。

Excel Word Outlook Tabs PowerPoint
  • オールインワンスイート — Excel、Word、Outlook、PowerPoint用アドインとOffice Tab Proが含まれます
  • 1つのインストーラー・1つのライセンス —— 数分でセットアップ完了(MSI対応)
  • 一括管理でより効率的 —— Officeアプリ間で快適な生産性を発揮
  • 30日間フル機能お試し —— 登録やクレジットカード不要
  • コストパフォーマンス最適 —— 個別購入よりお得