programing

VBA를 사용하지 않고 Excel에서 역문자열 검색을 실행하는 방법은 무엇입니까?

powerit 2023. 4. 23. 11:33
반응형

VBA를 사용하지 않고 Excel에서 역문자열 검색을 실행하는 방법은 무엇입니까?

문자열 목록이 포함된 Excel 스프레드시트가 있습니다.각 문자열은 여러 단어로 구성되지만 각 문자열의 단어 수는 다릅니다.

내장된 Excel 함수(VBA 없음)를 사용하여 각 문자열의 마지막 단어를 분리하는 방법이 있습니까?

예:

당신은 인간으로 분류됩니까?-> 인간?
아니요, 저는 고기 아이스크림입니다 -> 아이스크림아지즈!라이트! -> 라이트!

이것은 테스트되어 동작하고 있습니다(Brad의 원래 투고에 근거합니다).

=RIGHT(A1,LEN(A1)-FIND("|",SUBSTITUTE(A1," ","|",
     LEN(A1)-LEN(SUBSTITUTE(A1," ","")))))

원래 문자열에 파이프 "|" 문자가 포함될 수 있는 경우 위의 두 문자를 소스에 표시되지 않는 다른 문자로 바꿉니다.(번역 중에 인쇄할 수 없는 문자가 삭제되어 브래드의 원본이 망가진 것 같습니다.)

보너스: 작동 방식(오른쪽에서 왼쪽으로):

LEN(A1)-LEN(SUBSTITUTE(A1," ","")) 문자열의 수: " " " "
SUBSTITUTE(A1," ","|", ... )마지막 공간만 다른 공간으로 대체|
FIND("|", ... )– 의를 찾습니다. - 치환된 절대 위치를 찾습니다.| 공간이었다)
Right(A1,LEN(A1) - ... ))그의 모든 합니다. - 후후 、 – – – – – – 。|

EDIT: 원본 텍스트에 공백이 없는 경우를 고려하려면 공식의 선두에 다음을 추가합니다.

=IF(ISERROR(FIND(" ",A1)),A1, ... )

지금 전체 공식을 만듭니다.

=IF(ISERROR(FIND(" ",A1)),A1, RIGHT(A1,LEN(A1) - FIND("|",
    SUBSTITUTE(A1," ","|",LEN(A1)-LEN(SUBSTITUTE(A1," ",""))))))

'아까보다'를 .=IF(COUNTIF(A1,"* *")다른 버전의 구문입니다.

원래 문자열이 마지막 위치에 공백을 포함할 수 있는 경우 모든 공백을 세는 동안 자르기 기능을 추가합니다.기능을 다음과 같이 설정합니다.

=IF(ISERROR(FIND(" ",B2)),B2, RIGHT(B2,LEN(B2) - FIND("|",
    SUBSTITUTE(B2," ","|",LEN(TRIM(B2))-LEN(SUBSTITUTE(B2," ",""))))))

이것은 제가 성공적으로 사용한 기술입니다.

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

문자열의 첫 번째 단어를 얻으려면 REFT에서 LEFT로 변경하기만 하면 됩니다.

=TRIM(LEFT(SUBSTITUTE(A1, " ", REPT(" ", 100)), 100))

또한 A1을 텍스트를 유지하는 셀로 대체합니다.

Jerry의 답변의 보다 강력한 버전:

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

이 기능은 문자열의 길이, 선행 또는 후행 공간, 기타 모든 것에 관계없이 작동하며, 여전히 매우 짧고 단순합니다.

Excel 2003에서 테스트된 구글에서 이 기능을 찾았습니다.

=IF(COUNTIF(A1,"* *"),RIGHT(A1,LEN(A1)-LOOKUP(LEN(A1),FIND(" ",A1,ROW(INDEX($A:$A,1,1):INDEX($A:$A,LEN(A1),1))))),A1)

[어디서나] [어디서나]브래드C의 답변은 후행 공간이나 빈 감방에서도 통하지 않습니다
[ 2 차차 ( 2 ) ][ 2 ]

=RIGHT(TRIM(A1),LEN(TRIM(A1))-FIND(CHAR(7),SUBSTITUTE(" "&TRIM(A1)," ",CHAR(7),
LEN(TRIM(A1))-LEN(SUBSTITUTE(" "&TRIM(A1)," ",""))+1))+1)

이것은 매우 강력합니다. 공백이 없는 문장, 선행/추적 공간, 다중 공간, 다중 선행/추적 공간...원하는 텍스트 항목일 경우를 대비해서 구분 기호로 세로 막대 "|" 대신 char(7)를 사용했습니다.

이것은 매우 깨끗하고 컴팩트해서 잘 작동합니다.

{=RIGHT(A1,LEN(A1)-MAX(IF(MID(A1,ROW(1:999),1)=" ",ROW(1:999),0)))}

공백이 없거나 단어가 하나라도 오류 트랩이 되지 않지만 쉽게 추가할 수 있습니다.

★★★★
이것은 후행 공백, 단일 단어 및 빈 셀 시나리오를 처리합니다.나는 그것을 깨뜨릴 방법을 찾지 못했다.

{=RIGHT(TRIM(A1),LEN(TRIM(A1))-MAX(IF(MID(TRIM(A1),ROW($1:$999),1)=" ",ROW($1:$999),0)))}
=RIGHT(A1,LEN(A1)-FIND("`*`",SUBSTITUTE(A1," ","`*`",LEN(A1)-LEN(SUBSTITUTE(A1," ",""))))) 

2022년 9월 28일 신답변수

새로운 Excel 기능인 TEXT AFTER(가용성 확인)를 고려하면 다음과 같은 간단한 공식으로 달성할 수 있습니다.

=TEXTAFTER(A1," ", -1)

샘플 엑셀

마지막 단어 앞에 텍스트를 찾으려면 Jerry와 Joe의 답변을 추가하십시오.

=TRIM(LEFT(SUBSTITUTE(TRIM(A1), " ", REPT(" ", LEN(TRIM(A1)))), LEN(SUBSTITUTE(TRIM(A1), " ", REPT(" ", LEN(TRIM(A1)))))-LEN(TRIM(A1))))

A1에 'My little cat'이 있으면 'My little'이 된다(조앤제리가 'cat'을 준다).

Jerry와 Joe가 마지막 단어를 분리하는 것과 마찬가지로, 모든 것을 왼쪽 끝에 배치합니다(그 후 다시 잘라냅니다).

컬럼에 복사하여 해당 컬럼을 선택하고 [HOME]> [ Editing ]> [ Find & Select ], [Replace]를 선택합니다.

검색 내용:

를 클릭합니다Replace All.

별표 뒤에 공백이 있습니다.

문자열이 반전될 수 있다고 상상해 보세요.그러면 정말 쉬워요.문자열 작업 대신:

"My little cat" (1)

함께 작업하는 경우

"tac elttil yM" (2)

★★★★★★★★★★★★★★★★ =LEFT(A1;FIND(" ";A1)-1)에서는 A2를 얻을 수 ."My"(1 및 (1)의"tac"(2)와로 (2)는 ㄴㄴㄴㄴㄴ다."cat" (1마지막 입니다.

스트링을 리버스하기 위한 VBA가 몇 개 있습니다.저는 퍼블릭 VBA 기능을 선호합니다.

설명에 따라서, 상기의 인스톨을 실시합니다.으로 A1에예: "A1")."My little cat"A2 a 음 음 음 음 음 음 음 a a a a a a a a a a 。

=ReverseString(LEFT(ReverseString(A1);IF(ISERROR(FIND(" ";A1));
  LEN(A1);(FIND(" ";ReverseString(A1))-1))))

될 것이다"cat"에 기재되어있습니다.

위의 방법은 단어가 공백으로 구분된다고 가정합니다.IF절은 단일 단어 = 셀에 공백이 없는 셀에 대한 것입니다. ★★★★★★TRIM ★★★★★★★★★★★★★★★★★」CLEAN오리지널 스트링도 도움이 됩니다.의 첫 A1은 A1로)을 ."tac "LEFT하면 다른 합니다." cat"-1FINDstatement를 합니다.

, 에서 첫 는 쉽게 할 수 입니다.LEFT ★★★★★★★★★★★★★★★★★」FIND첫 번째 빈칸을 채웁니다., 「」(!)입니다.RIGHT기능하다불행히도 FIND에는 스트링을 해석하는 방향의 플래그가 없습니다.

따라서 문자열 전체가 단순히 반전됩니다. LEFT그리고.FIND정상적으로 동작하지만 추출된 문자열이 반전됩니다.하지만 끈을 되돌릴 줄만 알면 별 거 아니야첫 번째ReverseString계산식의 스테이트먼트가 이 작업을 수행합니다.

=LEFT(A1,FIND(IF(
 ISERROR(
  FIND("_",A1)
 ),A1,RIGHT(A1,
  LEN(A1)-FIND("~",
   SUBSTITUTE(A1,"_","~",
    LEN(A1)-LEN(SUBSTITUTE(A1,"_",""))
   )
  )
 )
),A1,1)-2)

이것도 필요해서 PT-BR로 번역했습니다.

(스페이스를 다음과 같이 변경했습니다.\패스 문자열의 파일 이름만 필요했기 때문입니다).

=SE(ÉERRO(PROCURAR("\",A1)),A1,DIREITA(A1,NÚM.CARACT(A1)-PROCURAR("|", SUBSTITUIR(A1,"\","|",NÚM.CARACT(A1)-NÚM.CARACT(SUBSTITUIR(A1,"\",""))))))

이를 위한 또 다른 방법은 다음과 같습니다.

=IF(ISERROR(TRIM(MID(TRIM(D14),SEARCH("|",SUBSTITUTE(TRIM(D14)," ","|",LEN(TRIM(D14))-LEN(SUBSTITUTE(TRIM(D14)," ","")))),LEN(TRIM(D14))))),TRIM(D14),TRIM(MID(TRIM(D14),SEARCH("|",SUBSTITUTE(TRIM(D14)," ","|",LEN(TRIM(D14))-LEN(SUBSTITUTE(TRIM(D14)," ","")))),LEN(TRIM(D14)))))

여기에 이미지 설명 입력

스트링을 반전시켜 첫 번째 공간을 찾아도 이 작업을 수행할 수 있습니다.

=MID(C3,2+LEN(C3)-SEARCH(" ",CONCAT(MID(C3,SEQUENCE(LEN(C3),,LEN(C3),-1),1))),LEN(A1))

  1. 문자열을 반전시키다

CONCAT(MID(C3,SEQUENCE(LEN(C3),,LEN(C3),-1),1))

  1. 반전 문자열에서 첫 번째 공백 찾기

SEARCH(" ",...

  1. 반전된 문자열에서 발견된 공간의 위치를 문자열 길이에서 제거하고 해당 부분을 반환합니다.

=MID(C3,2+LEN(C3)-SEARCH...

저도 이와 같은 작업이 있었는데 작업을 마치자 위의 방법을 사용하여 새로운 방법이 떠올랐습니다.이렇게 하는 게 어때?

  1. 스트링을 반대로 합니다(「스트링 1」은 「eno gnuts」가 됩니다).
  2. 정상적인 이전 찾기(왼쪽에서 오른쪽으로 하드 코드됨)를 사용합니다.
  3. 다시 읽을 수 있는 문자열로 반전합니다.

이거 어때요?

언급URL : https://stackoverflow.com/questions/350264/how-can-i-perform-a-reverse-string-search-in-excel-without-using-vba

반응형