Rajeevには、一連の単語の最初の文字を抽出する式が必要です。たとえば、セルに「Rajeev Kumar Pandey」というテキストが含まれている場合、彼は別のセルに「RKP」という文字を抽出したいと考えています。

連続する単語の数は、セルごとに異なります。

このタスクに取り組むには、いくつかの方法があります。そもそも、中間列を追加してワークシートの構造を変更したくないと想定されています。この仮定により、テキストから列への機能を使用して元の文字列を個々の単語に分割することもできなくなります。

問題の鍵は、数式が元の文字列のどこにスペースがあるかを判別できることを確認することです。次のような式でうまくいくと思うかもしれません:

=LEFT(A1,1)&MID(A1,FIND(" ",A1,1)+1,1)&MID(A1, FIND(" ",A1,FIND(" ",A1,1)+1)+1,1)

この式は部分的に機能します。元の文字列に3つの単語を区切る2つのスペースがある場合は、問題なく機能します。単語が少ない場合、数式はエラーを返します。それ以上の単語がある場合は、最初の3つの単語の最初の文字のみが返されます(3番目の単語の後はすべて無視されます)。

つまり、数式はスペースをチェックするだけでなく、スペースがない場合やスペースが少なすぎる場合にエラーを処理する必要があります。エラーチェックは、式がはるかに長くなることを意味します:

=IF(ISERR(LEFT(A1,1)&MID(A1,SEARCH(" ",A1)+1,1)

&MID(A1,SEARCH(" ",A1,SEARCH(" ",A1)+1)+1,1)

&MID(A1,SEARCH(" ",A1,SEARCH(" ",A1,SEARCH(" ",A1)+1)+1)+1,1)

&MID(A1,SEARCH(" ",A1,SEARCH(" ",A1,SEARCH(" ",A1,SEARCH(" ", A1)+1)+1)+1)+1,1)),IF(ISERR(LEFT(A1,1)&MID(A1,SEARCH(" ",A1)+1,1)

&MID(A1,SEARCH(" ",A1,SEARCH(" ",A1)+1)+1,1)

&MID(A1,SEARCH(" ",A1,SEARCH(" ",A1,SEARCH(" ",A1)+1)+1)+1,1)), IF(ISERR(LEFT(A1,1)&MID(A1,SEARCH(" ",A1)+1,1)

&MID(A1,SEARCH(" ",A1,SEARCH(" ",A1)+1)+1,1)), IF(ISERR(LEFT(A1,1)&MID(A1,SEARCH(" ",A1)+1,1)), IF(ISERR(LEFT(A1,1)),"",LEFT(A1,1)),LEFT(A1,1)

&MID(A1,SEARCH(" ",A1)+1,1)),LEFT(A1,1)&MID(A1,SEARCH(" ",A1)+1,1)

&MID(A1,SEARCH(" ",A1,SEARCH(" ",A1)+1)+1,1)), LEFT(A1,1)&MID(A1,SEARCH(" ",A1)+1,1)

&MID(A1,SEARCH(" ",A1,SEARCH(" ",A1)+1)+1,1)

&MID(A1,SEARCH(" ",A1,SEARCH(" ",A1,SEARCH(" ",A1)+1)+1)+1,1)),LEFT(A1,1)

&MID(A1,SEARCH(" ",A1)+1,1)&MID(A1,SEARCH(" ",A1,SEARCH(" ",A1)+1)+1,1)

&MID(A1,SEARCH(" ",A1,SEARCH(" ",A1,SEARCH(" ",A1)+1)+1)+1,1)

&MID(A1,SEARCH(" ",A1,SEARCH(" ",A1,SEARCH(" ",A1,SEARCH(" ",A1)+1)

+1)+1)+1,1))

この数式は、文字列内の0〜5語を適切に処理します。また、文字列がスペースで開始または終了せず、単語間に複数のスペースが含まれていないことも前提としています。多数の単語やその他の潜在的な問題(単語間のスペースの数など)を処理する場合は、ユーザー定義関数を使用するのが最適です。

ユーザー定義関数が文字列の単語から先頭の文字を引き出す方法はいくつもあります。実際、私は同じことを達成するかなりの数のバリエーションを受け取りました。ただし、次の例は、おそらく私が遭遇した最も簡潔なコードです。

Function Initials(Raw As String) As String     Dim Temp As Variant     Dim J As Integer

Application.Volitile     Temp = Split(Trim(Raw))



For J = 0 To UBound(Temp)

Initials = Initials & Left(Temp(J), 1)

Next J End Function

Split関数は、文字列内のスペースが発生する場所に基づいて文字列を「引き裂き」ます。文字列内の個々の単語は配列(この場合はTemp)に配置され、そこで個々の単語にアクセスできます。ワークシートで関数を使用するには、次のようなものを使用します。

=Initials(A1)

注:

このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。

_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。

このヒント(8663)は、Microsoft Excel 2007、2010、および2013に適用されます。Excelの古いメニューインターフェイス用のこのヒントのバージョンは、次の場所にあります。