列に名前があります。その列の姓だけを別の列に分割する必要があります。
姓は、右側からスペースで区切られます。
セルA2 = Alistair Stevens
の内容とセルB2
に数式を入力しました(セル'Stevens'
にB2
が必要です)
次の式を使用してみました。
=RIGHT(A2,FIND(" ",A2,1)-1)
=RIGHT(A2,FIND(" ",A2))
これらの式は両方ともworkこのセルでは使用できますが、下のセルに入力/コピー&ペーストすると機能しません。間違った値を取得します!!
A3 -> David Mckenzie
B3 -> Mckenzie
ミドルネームがある場合でも、これは機能します:
_=MID(A2,FIND(CHAR(1),SUBSTITUTE(A2," ",CHAR(1),LEN(A2)-LEN(SUBSTITUTE(A2," ",""))))+1,LEN(A2))
_
すべてが姓である場合は、 this answer を確認してください。
名前の末尾にスペースが含まれている場合は、上記の式で_A2
_のすべてのインスタンスをTRIM(A2)
に置き換えて削除することができます。
最初の式=RIGHT(A2,FIND(" ",A2,1)-1)
が_Alistair Stevens
_に対して機能するのは、たまたま偶然であることに注意してください。これは、_"Alistair"
_と_" Stevens"
_に同じ文字数が含まれているためです(_" Stevens"
_の先頭のスペースを数える場合)。
@Jeanが提供する答えは、実用的ですがあいまいなソリューションを提供します(ただし、末尾のスペースは処理しません)
別の方法として、vbaユーザー定義関数(UDF)を検討してください。
_Function RightWord(r As Range) As Variant
Dim s As String
s = Trim(r.Value)
RightWord = Mid(s, InStrRev(s, " ") + 1)
End Function
_
シートで使用する=RightWord(A2)
テキストの最後から2番目のWordを取得する場合は、このマクロをスプレッドシートの関数として使用できます。
Public Function Get2ndText(S As String) As String
Dim sArr() As String
Dim i As Integer
sArr = Split(S, " ")
'get the next to the last string
i = UBound(sArr) - 1
Get2ndText = sArr(i)
End Function
次に、スプレッドシートB1にテキストとして:
CURRENT OWNER 915 BROADWAY ST HOUSTON TX 77012-2126
b2では、式は次のようになります。
=Get2ndText(B1)
結果は
TX
Excelでこの機能を試してください。
Public Shared Function SPLITTEXT(Text As String, SplitAt As String, ReturnZeroBasedIndex As Integer) As String
Dim s() As String = Split(Text, SplitAt)
If ReturnZeroBasedIndex <= s.Count - 1 Then
Return s(ReturnZeroBasedIndex)
Else
Return ""
End If
End Function
次のように使用します。
名(A1)|姓(A2)
セルA1の値= Michael Zomparelli
A2列に姓が必要です。
=SPLITTEXT(A1, " ", 1)
最後のパラメータは、返されるゼロベースのインデックスです。したがって、スペース文字で分割すると、インデックス0 = Michaelおよびインデックス1 = Zomparelli
上記の関数は.Net関数ですが、VBAに簡単に変換できます。
Right(A1, Len(A1)-Find("(asterisk)",Substitute(A1, "(space)","(asterisk)",Len(A1)-Len(Substitute(A1,"(space)", "(no space)")))))
これを試して。それがうまくいくことを願っています。
より単純なものは次のとおりです:=TRIM(RIGHT(SUBSTITUTE(TRIM(A2)," ",REPT(" ",99)),99))
データに不要なスペースが含まれていないことが確実な場合は、TRIM(A2)
の代わりにA2
を使用できます。
Rick Rothsteinによって説明された概念に基づく: http://www.excelfox.com/forum/showthread.php/333-Get-Field-from-Delimited-Text-String
ネクロポスタでごめんなさい!