programing

셀에서 마지막 하위 문자열 추출

subpage 2023. 5. 9. 22:46
반응형

셀에서 마지막 하위 문자열 추출

열에 이름이 있습니다.저는 그 칸의 성만 다른 칸으로 나누어야 합니다.

성은 오른쪽부터 공백으로 구분됩니다.

셀에 있는 내용물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

반응형