Reggieには、3つ以上の単語を含むセルがあります。 (単語の数は異なる場合があります。)彼は、セルの最初の単語またはセルの最後の単語のいずれかを抽出できる式を必要としています。たとえば、セルに「Reggie was here in 2016」というフレーズが含まれている場合、「Reggie」を抽出する数式と「2016」を抽出する数式が必要です。

数式を使用して両方の単語を抽出できます。最初の単語の抽出は比較的簡単です。フレーズの最初のスペースの場所を見つけて、その左側にあるものをすべて抽出するだけです。フレーズがA1にあると推定される場合は、次の式を使用できます。

=LEFT(A1,FIND(" ",A1)-1)

最後の単語を抽出するには、少し異なる式が必要になります:

=TRIM(RIGHT(SUBSTITUTE(TRIM(A1)," ",REPT(" ",255)),255))

この式は、スペースを255個のブランクの文字列に変更します。次に、最後の255文字を検索し、文字を左にトリミングして、最後の単語を残します。

必要に応じて、ユーザー定義関数を作成して、必要な単語を取得することもできます。最初の単語をつかむのは簡単です:

Function FirstWord(c As String)

Dim arr

arr = Split(Trim(c), " ")

FirstWord = arr(LBound(arr))

End Function

この関数は、Split関数を使用して、2番目のパラメーター( “”)を区切り文字として使用して、指定されたセルにあるものをすべて引き離します。配列(arr)の各要素には、元の文字列の一部が含まれます。この場合、返されるのは配列の最初の要素(LBoundで指定)、つまり最初の単語です。

フレーズの単語は配列に配置されているため、関数のわずかなバリエーションを使用して、最後の単語を返すことができます。

Function LastWord(c As String)

Dim arr

arr = Split(Trim(c), " ")

LastWord = arr(UBound(arr))

End Function

基本的に、関数の実際の変更は、LBoundの代わりにUBoundを使用することだけであることに注意してください。 UBound関数は、配列の最後の要素を指定します。ワークシートでは、次のようにこれらの関数の両方を使用できます。

=FirstWord(A1)

=LastWord(A1)

必要に応じて、Split関数の使用をバイパスして、代わりに他の文字列関連の関数を使用することもできます。

Function GetFirst(c As String)

GetFirst = Left(c, InStr(c, " ") - 1)

End Function
Function GetLast(c As String)

GetFirst = Mid(c, InstrRev(c, " ") + 1)

End Function

注:

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

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

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

Excelの古いメニューインターフェイス用のこのヒントのバージョンは、次の場所にあります: