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

セルから各単語の最初の文字を抽出する方法は?

ワークシートに国名のリストがあり、これらの名前の各単語の最初の文字を抽出したいとします。 Excel には、セル内の各単語の頭文字を直接抽出する機能はありません。ただし、このタスクを効率的に実行し、プロセスを簡単かつ効果的にするためのいくつかの実用的な方法を紹介します。


数式を使用してセルから各単語の最初の文字を抽出します

セル内の各単語の最初の文字を取得するには、次の配列数式が役に立ちます。

1. 結果を取得したい空のセルに次の数式をコピーし、 を押してください。 Ctrl + Shift + Enter 最初の結果を得るために一緒にキーを押します。

=CONCAT(LEFT(FILTERXML("<a><b>"&SUBSTITUTE(A2," ","</b><b>")&"</b></a>","//b"),1))

2. 次に、数式をプルダウンして他のセルを埋めます。このアクションにより、各セル内の各単語の最初の文字が一度に自動的に抽出されます。スクリーンショットを参照してください:

この式の説明:
  • SUBSTITUTE(A2," "," "):この関数は、セル A2 のテキスト内の各スペースを に置き換えます。これにより、テキスト内の各単語がこれらの XML タグで効果的に分離されます。たとえば、A2 に「Hello World」が含まれている場合、式のこの部分はそれを「Hello World」に変換します。
  • " "&...&" ": この部分は、SUBSTITUTE 関数の結果を先頭と末尾でラップします。例を続けると、文字列はHello Worldになり、各単語がタグで囲まれた有効な XML 構造を形成します。
  • FILTERXML(...,"//b"): FILTERXML は、前の手順で作成された XML 文字列を解析するために使用されます。 XPath クエリ //bは、タグ内のすべての要素、つまり元の文字列内の各単語を選択します。この例を使用すると、FILTERXML は「Hello」と「World」の 2 つの要素を含む配列を返します。
  • 左(...,1): 次に、FILTERXML によって返された配列の各要素に LEFT 関数が適用され、各単語の最初の文字が抽出されます。この例では、「H」と「W」になります。
  • CONCAT(...): 最後に、CONCAT 関数は配列のすべての要素を 1 つの文字列に連結します。 「Hello World」の例では、「H」と「W」を連結して「HW」を生成します。

Kutools AI Aideを使用してCellから各単語の最初の文字を抽出します

セル内の各単語の最初の文字を素早く抽出します。 Kutools AI アシスタント。複雑な数式は必要ありません。 AI アシスタントがタスクを自動化し、データ処理をシンプルかつ効率的にします。 Excel ワークフローを合理化し、作業を容易にします。試す Kutools AI アシスタント スマートな Excel 操作を体験してください。

Note: 使用するには Kutools AI アシスタント of Kutools for Excelについては Kutools for Excelをダウンロードしてインストールします 最初。

Kutools for Excelをインストールした後、をクリックしてください クツールAI > AI補佐官 を開く Kutools AI アシスタント ペイン:

  1. データ リストを選択し、チャット ボックスに要件を入力して、 送信 ボタンまたはプレス 入力します 質問を送信するためのキー。
  2. 分析後、クリックします 実行する 実行するボタン。 Kutools AI Aide は AI を使用してリクエストを処理し、結果を Excel で直接返します。


ユーザー定義関数を使用してセルから各単語の最初の文字を抽出します

セルから各単語の最初の文字を抽出するタスクは、Excel のユーザー定義関数 (UDF) を使用することで大幅に最適化できます。このセクションでは、このタスクを効率的に実行するために UDF を作成および使用する方法について説明します。

1。 を押し続けます Alt + F11 キーを押して Microsoft Visual Basic forApplicationsウィンドウ.

2に設定します。 OK をクリックします。 インセット > モジュール、次のコードをに貼り付けます モジュールウィンドウ.

Function GetFirstLetters(rng As Range) As String
'Updateby Extendoffice
    Dim arr
    Dim I As Long
    arr = VBA.Split(rng, " ")
    If IsArray(arr) Then
        For I = LBound(arr) To UBound(arr)
            GetFirstLetters = GetFirstLetters & Left(arr(I), 1)
        Next I
    Else
        GetFirstLetters = Left(arr, 1)
    End If
End Function

3. 次に、このコードを保存して閉じ、ワークシートに戻り、次の数式を入力します。 = GetFirstLetters(A2) 空白のセルに。次に、この数式を適用するセルに塗りつぶしハンドルをドラッグします。一連の単語からすべての最初の文字が抽出されています。スクリーンショットを参照してください。


関連記事:

  • テキスト文字列から最初または最後の 2 語または n 語を抽出します
  • スペースで区切られたテキスト文字列のリストがあり、セル値から最初または最後のXNUMXつまたはn個の単語を抽出して、次のスクリーンショットの結果を取得したい場合。 この記事では、Excelのテキスト文字列から最初または最後のXNUMXつまたはn個の単語を抽出するための数式をいくつか紹介します。
  • 文字列からメールアドレスを抽出する
  • WebサイトからExcelワークシートにいくつかの電子メールアドレスをインポートすると、常に無関係なテキストが含まれますが、テキスト文字列から純粋な電子メールアドレスを抽出するだけです(次のスクリーンショットを参照)。 セルテキストからのみメールアドレスをすばやく取得するにはどうすればよいですか?
  • 2 つの異なる文字間の文字列を抽出する
  • 以下のスクリーンショットに示すように、XNUMXつの文字の間の文字列の一部を抽出する必要があるExcelの文字列のリストがある場合、それをできるだけ早く処理するにはどうすればよいですか? ここでは、この仕事を解決するためのいくつかの方法を紹介します。

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

🤖 Kutools AI アシスタント: 以下に基づいてデータ分析に革命をもたらします。 インテリジェントな実行   |  コードを生成  |  カスタム数式の作成  |  データを分析してグラフを生成する  |  Kutools関数を呼び出す...
人気の機能: 重複を検索、強調表示、または識別する   |  空白行を削除する   |  データを失わずに列またはセルを結合する   |   数式なしのラウンド ...
スーパールックアップ: 複数の基準の VLookup    複数の値の VLookup  |   複数のシートにわたる VLookup   |   ファジールックアップ ....
詳細ドロップダウン リスト: ドロップダウンリストを素早く作成する   |  依存関係のドロップダウン リスト   |  複数選択のドロップダウンリスト ....
列マネージャー: 特定の数の列を追加する  |  列の移動  |  Toggle 非表示列の表示ステータス  |  範囲と列の比較 ...
注目の機能: グリッドフォーカス   |  デザインビュー   |   ビッグフォーミュラバー    ワークブックとシートマネージャー   |  リソースライブラリ (自動テキスト)   |  日付ピッカー   |  ワークシートを組み合わせる   |  セルの暗号化/復号化    リストごとにメールを送信する   |  スーパーフィルター   |   特殊フィルター (太字/斜体/取り消し線をフィルター...) ...
上位 15 のツールセット12 テキスト ツール (テキストを追加, 文字を削除する、...)   |   50+ チャート 種類 (ガントチャート、...)   |   40+ 実用的 (誕生日に基づいて年齢を計算する、...)   |   19 挿入 ツール (QRコードを挿入, パスから画像を挿入、...)   |   12 変換 ツール (数字から言葉へ, 通貨の換算、...)   |   7 マージ&スプリット ツール (高度な結合行, 分割セル、...)   |   ... もっと

Kutools for Excel で Excel スキルを強化し、これまでにない効率を体験してください。 Kutools for Excelは、生産性を向上させ、時間を節約するための300以上の高度な機能を提供します。  最も必要な機能を入手するにはここをクリックしてください...

説明


Officeタブは、タブ付きのインターフェイスをOfficeにもたらし、作​​業をはるかに簡単にします

  • Word、Excel、PowerPointでタブ付きの編集と読み取りを有効にする、パブリッシャー、アクセス、Visioおよびプロジェクト。
  • 新しいウィンドウではなく、同じウィンドウの新しいタブで複数のドキュメントを開いて作成します。
  • 生産性を 50% 向上させ、毎日何百回もマウス クリックを減らすことができます!
Comments (18)
No ratings yet. Be the first to rate!
This comment was minimized by the moderator on the site
Hello, If the the nth Word is enclosed in a (), it is returning the ( since it comes before the First Letter.

Example:
Word Word (Word)

How to return WWW instead of WW( ?
This comment was minimized by the moderator on the site
Hello, Sharmane
Maybe the following code can help you:
Function GetFirstLetters(rng As Range) As String
    Dim arr() As String
    Dim i As Long
    
    arr = VBA.Split(rng.Value, " ")
    
    For i = LBound(arr) To UBound(arr)
        If Left(arr(i), 1) <> "(" And Right(arr(i), 1) <> ")" Then
            GetFirstLetters = GetFirstLetters & Left(arr(i), 1)
        ElseIf Left(arr(i), 1) = "(" And Right(arr(i), 1) = ")" Then
            GetFirstLetters = GetFirstLetters & Mid(arr(i), 2, 1)
        End If
    Next i
End Function


Please have a try, thank you!
This comment was minimized by the moderator on the site
Another suggestion if using Microsoft 365: =TEXTJOIN("",,LEFT(TEXTSPLIT(D9," "),1)) where the source string is in B9.
Wrap in UPPER function to enforce uppercase: =UPPER(TEXTJOIN("",,LEFT(TEXTSPLIT(D9," "),1)))
@Pradeep Gyawali -> add space: =UPPER(TEXTJOIN(" ",,LEFT(TEXTSPLIT(D9," "),1)))
This comment was minimized by the moderator on the site
Wondering how to add this into the existing formula I have that works to bring the value over from a cell in another sheet? I only want to bring over the first character in each cell. Here's the formula

=IF(LOOKUP(2,1/(OriginalSubmission!D:D<>""),ROW(OriginalSubmission!D:D))=ROW(OriginalSubmission!D4),"",INDIRECT("OriginalSubmission!D5:"&"D"&(LOOKUP(2,1/(OriginalSubmission!D:D<>""),ROW(OriginalSubmission!D:D)))))
This comment was minimized by the moderator on the site
Hello, SARAH
Do you mean extracting each first character in cells from another worksheet? If so, you just need to copy and paste the code in this article, and then apply this formula into another sheet.
=GetFirstLetters(OriginalSubmission!D4)


Note: OriginalSubmission is the sheet name that you want to extract charatcers from.
Please try, hope it can help you!
This comment was minimized by the moderator on the site
How to create space between the letters?

South Korea= S K
This comment was minimized by the moderator on the site
Hi, Gyawali
If you want to add space for each character, please apply the following VBA code:
Function GetFirstLetters(Rng As Range) As String
'Updateby Extendoffice
    Dim xStr
    Dim arr
    Dim I As Long
    xStr = " "
    arr = VBA.Split(Rng, " ")
    If IsArray(arr) Then
        For I = LBound(arr) To UBound(arr)
            GetFirstLetters = GetFirstLetters & Left(arr(I), 1) & xStr
        Next I
    Else
        GetFirstLetters = Left(arr, 1) & xStr
    End If
End Function


After insert the code, and then apply this formula: =GetFirstLetters(A2) to get the result you need.
Please try, hope it can help you!
This comment was minimized by the moderator on the site
Why is this giving me the first 2 letters in each word?
This comment was minimized by the moderator on the site
This is awesome. Such a time saver
This comment was minimized by the moderator on the site
This code is good for upto five words, where D20 is the cell with data.



=IF(ISERR(LEFT($D$20,1)&MID($D$20,SEARCH(" ",$D$20)+1,1)
&MID($D$20,SEARCH(" ",$D$20,SEARCH(" ",$D$20)+1)+1,1)
&MID($D$20,SEARCH(" ",$D$20,SEARCH(" ",$D$20,SEARCH(" ",$D$20)+1)+1)+1,1)
&MID($D$20,SEARCH(" ",$D$20,SEARCH(" ",$D$20,SEARCH(" ",$D$20,SEARCH(" ",
$D$20)+1)+1)+1)+1,1)),IF(ISERR(LEFT($D$20,1)&MID($D$20,SEARCH(" ",$D$20)+1,1)
&MID($D$20,SEARCH(" ",$D$20,SEARCH(" ",$D$20)+1)+1,1)
&MID($D$20,SEARCH(" ",$D$20,SEARCH(" ",$D$20,SEARCH(" ",$D$20)+1)+1)+1,1)),
IF(ISERR(LEFT($D$20,1)&MID($D$20,SEARCH(" ",$D$20)+1,1)
&MID($D$20,SEARCH(" ",$D$20,SEARCH(" ",$D$20)+1)+1,1)),
IF(ISERR(LEFT($D$20,1)&MID($D$20,SEARCH(" ",$D$20)+1,1)),
IF(ISERR(LEFT($D$20,1)),"",LEFT($D$20,1)),LEFT($D$20,1)
&MID($D$20,SEARCH(" ",$D$20)+1,1)),LEFT($D$20,1)&MID($D$20,SEARCH(" ",$D$20)+1,1)
&MID($D$20,SEARCH(" ",$D$20,SEARCH(" ",$D$20)+1)+1,1)),
LEFT($D$20,1)&MID($D$20,SEARCH(" ",$D$20)+1,1)
&MID($D$20,SEARCH(" ",$D$20,SEARCH(" ",$D$20)+1)+1,1)
&MID($D$20,SEARCH(" ",$D$20,SEARCH(" ",$D$20,SEARCH(" ",$D$20)+1)+1)+1,1)),LEFT($D$20,1)
&MID($D$20,SEARCH(" ",$D$20)+1,1)&MID($D$20,SEARCH(" ",$D$20,SEARCH(" ",$D$20)+1)+1,1)
&MID($D$20,SEARCH(" ",$D$20,SEARCH(" ",$D$20,SEARCH(" ",$D$20)+1)+1)+1,1)
&MID($D$20,SEARCH(" ",$D$20,SEARCH(" ",$D$20,SEARCH(" ",$D$20,SEARCH(" ",$D$20)+1)
+1)+1)+1,1))
This comment was minimized by the moderator on the site
Подскажите пожалуйста, можно ли модифицировать код чтобы забиралась не первые а Заглавные буквы?
This comment was minimized by the moderator on the site
i think it has one bug, it's automatically removed from module when sheet is closed, need to again every time when open sheet same process to be required, please advice how to save this formula in excel permanently.
This comment was minimized by the moderator on the site
Pls save excel as Excel Macro-Enablel work book.
This comment was minimized by the moderator on the site
Please include this part: If you create a function called DISCOUNT in a workbook called Personal.xlsb and you call that function from another workbook, you must type =personal.xlsb!discount(), not simply =discount(). https://support.office.com/en-us/article/Create-Custom-Functions-in-Excel-2007-2f06c10b-3622-40d6-a1b2-b6748ae8231f
There are no comments posted here yet
Load More
Please leave your comments in English
Posting as Guest
×
Rate this post:
0   Characters
Suggested Locations