셀에서 마지막 하위 문자열 추출
열에 이름이 있습니다.저는 그 칸의 성만 다른 칸으로 나누어야 합니다.
성은 오른쪽부터 공백으로 구분됩니다.
셀에 있는 내용물A2 = Alistair Stevens그리고 세포에 공식을 입력했습니다.B2(필요합니다.'Stevens'감방에서B2)
다음 공식을 사용해 보았습니다.
=RIGHT(A2,FIND(" ",A2,1)-1)
=RIGHT(A2,FIND(" ",A2))
이 두 공식은 모두 이 셀에 대해 작동하지만 아래 셀에 대해 입력/복사하여 붙여넣으면 작동하지 않습니다.나는 잘못된 가치관을 이해합니다!!
A3 -> David Mckenzie
B3 -> Mckenzie
이것은 중간 이름이 있는 경우에도 작동합니다.
=MID(A2,FIND(CHAR(1),SUBSTITUTE(A2," ",CHAR(1),LEN(A2)-LEN(SUBSTITUTE(A2," ",""))))+1,LEN(A2))
성을 제외한 모든 것을 원한다면, 이 대답을 확인하세요.
이름에 뒤에 공백이 있는 경우 다음의 모든 인스턴스를 대체하여 해당 공백을 제거할 수 있습니다.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)
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 기반 인덱스입니다.따라서 공백 차트에서 분할하면 인덱스 0 = Michael 및 인덱스 1 = Zomparelli
위의 함수는 입니다.순기능이지만 VBA로 쉽게 변환할 수 있습니다.
텍스트에서 두 번째에서 마지막 단어를 가져오려면 이 매크로를 스프레드시트의 함수로 사용할 수 있습니다.
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
더 단순한 방법은 다음과 같습니다.=TRIM(RIGHT(SUBSTITUTE(TRIM(A2)," ",REPT(" ",99)),99))
사용할 수 있습니다.A2대신에TRIM(A2)데이터에 원하지 않는 공간이 없는 것으로 확인할 수 있습니다.
Rick Rothstein이 설명한 개념을 기반으로 합니다. http://www.excelfox.com/forum/showthread.php/333-Get-Field-from-Delimited-Text-String
네크로포스터를 해서 미안해요!
Right(A1, Len(A1)-Find("(asterisk)",Substitute(A1, "(space)","(asterisk)",Len(A1)-Len(Substitute(A1,"(space)", "(no space)")))))
이거 먹어봐요.효과가 있기를 바랍니다.
사용해 보십시오.
=RIGHT(TRIM(A2),LEN(TRIM(A2))-FIND(" ",TRIM(A2)))
저는 공식을 복사/붙여넣을 수 있었고 잘 작동했습니다.
다음은 Excel 텍스트 기능 목록입니다(2011년 5월에 작동했지만 Microsoft가 다음에 웹 사이트를 변경할 때 손상될 수 있음).:-(
중간 이름이나 이니셜, 제목 등이 예상되는 경우 다단계 중첩 IF() 함수를 사용하여 처리할 수 있습니다.Excel 공식은 루프를 지원하지 않으므로 수행할 수 있는 작업에 몇 가지 제한이 있습니다.
RIGHT는 첫 번째 매개 변수의 오른쪽에서 두 번째 매개 변수의 문자 수에 상관없이 반환합니다.따라서 열 A의 총 길이에서 인덱스를 뺀 값을 사용하려고 합니다. 따라서 다음과 같습니다.
=RIGHT(A2, LEN(A2)-FIND(" ", A2, 1))
그리고 TRIM(A2)이 나타나는 모든 곳에서 사용하는 것을 고려해야 합니다.
사용해 보십시오.
Right(RC[-1],Len(RC[-1])-InStrRev(RC[-1]," "))
언급URL : https://stackoverflow.com/questions/6133287/extract-the-last-substring-from-a-cell
'programing' 카테고리의 다른 글
| 주피터 노트북을 사용할 때 "실행 중인 이벤트 루프에서 asyncio.run()을 호출할 수 없음" (0) | 2023.05.14 |
|---|---|
| 일반 PropertyMetadata보다 FrameworkPropertyMetadata 또는 UIPPropertyMetadata를 언제 사용해야 합니까? (0) | 2023.05.09 |
| Azure 서비스 패브릭 대 Azure 컨테이너 서비스 (0) | 2023.05.09 |
| AADSTS70005: 애플리케이션에 대해 response_type 'id_token'이(가) 사용되도록 설정되지 않았습니다. (0) | 2023.05.09 |
| 한 번에 여러 예외를 탐지하시겠습니까? (0) | 2023.05.09 |