トムはかなりの量のテキストを含むワークシートを持っています。彼は、任意のセルのテキストから、括弧内の各単語の最初の文字を引き出す方法を必要としています。たとえば、セルに「根絶する必要のある雑草が(春の間に)ある」と含まれている場合、トムは「dts」を引く必要があります

そのテキストから。彼は、これはマクロで実行する必要があると考えていますが、どこから始めればよいのかわかりません。

このタスクを手動で実行したい場合、実行するのはそれほど難しくありません。手順をすばやく一般的に説明します。

テキストが列Aにあり、各セルに含まれる括弧のセットが1つだけであると仮定します。この場合、列Bに次のように入力できます。

=IFERROR(LEFT(MID(A1,FIND("(",A1)+1,LEN(A1)),FIND(")", MID(A1,FIND("(",A1)+1,LEN(A1)))-1),"")

ここでは数式を2行に分割しましたが、これは1つの数式であり、そのように入力する必要があることに注意してください。必要な数のセルにコピーします。列Bに表示されるのは、セルの場合、最初の括弧のセット(存在する場合)に含まれるテキストです。

次に、列Bのすべてのセルを選択し、Ctrl + Cを押してから、[形式を選択して貼り付け]を使用して値をそれらのセルに貼り付けます。これにより数式は削除されますが、抽出された括弧内のテキストは残ります。

これで、列Bのセルが選択されたままになります。 (リボンの[データ]タブから)[テキストから列へ]ウィザードを使用して、単語を個々のセルに分割します。これは、ウィザードでスペースを区切り文字として使用すると簡単に実行できます。これを実行すると、列Cで始まる各列に1つの単語が表示されます。

ここで、単語が含まれていない最初の列(J列としましょう)に、次の数式を入力します。

=LEFT(TRIM(C1),1) & LEFT(TRIM(D1),1) & LEFT(TRIM(E1),1)

& LEFT(TRIM(F1),1) & LEFT(TRIM(G1),1)) & LEFT(TRIM(H1),1)

& LEFT(TRIM(I1),1)

繰り返しますが、これは3行で示されていますが、単一の式です。これにより、列Jに目的の最初の文字が表示されます。

たまに文字を引っ張るだけでよいのであれば、明らかにこのプロセスは「実行可能」です。より頻繁に行う必要がある場合は、ユーザー定義関数を使用して作業を行う方がよいでしょう。以下は、問題なく機能する単純なものです。

Function PickInitials(sRaw As String) As String     Dim sTemp As String     Dim J As Integer     Dim Wds() As String

sTemp = ""

J = InStr(sRaw, "(")

If J > 0 Then         sTemp = Mid(sRaw, J + 1)

J = InStr(sTemp, ")")

If J > 0 Then             sTemp = Left(sTemp, J - 1)

End If         Wds = Split(sTemp)



sTemp = ""

For J = 0 To UBound(Wds)

sTemp = sTemp & Left(Trim(Wds(J)),1)

Next J     End If     PickInitials = sTemp End Function

この関数を使用するには、セルで次を使用するだけです。

=PickInitials(A1)

この関数は、セルに括弧がない場合、開き括弧しかない場合、単語間の複数のスペースによってスローされない場合に問題なく機能します。この関数は、最初の文字の大文字を保持します。すべての文字を小文字として返したい場合は、マクロの最後の行を次のように変更できます。

PickInitials = LCase(sTemp)

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

このヒント(13622)は、Microsoft Excel 2007、2010、2013、2016、2019、およびOffice365のExcelに適用されます。