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"
-1
FIND
statement를 합니다.
, 에서 첫 는 쉽게 할 수 입니다.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))
- 문자열을 반전시키다
CONCAT(MID(C3,SEQUENCE(LEN(C3),,LEN(C3),-1),1))
- 반전 문자열에서 첫 번째 공백 찾기
SEARCH(" ",...
- 반전된 문자열에서 발견된 공간의 위치를 문자열 길이에서 제거하고 해당 부분을 반환합니다.
=MID(C3,2+LEN(C3)-SEARCH...
저도 이와 같은 작업이 있었는데 작업을 마치자 위의 방법을 사용하여 새로운 방법이 떠올랐습니다.이렇게 하는 게 어때?
- 스트링을 반대로 합니다(「스트링 1」은 「eno gnuts」가 됩니다).
- 정상적인 이전 찾기(왼쪽에서 오른쪽으로 하드 코드됨)를 사용합니다.
- 다시 읽을 수 있는 문자열로 반전합니다.
이거 어때요?
언급URL : https://stackoverflow.com/questions/350264/how-can-i-perform-a-reverse-string-search-in-excel-without-using-vba
'programing' 카테고리의 다른 글
이미 실행 중인 프로세스를 nohup에 넣는 방법은 무엇입니까? (0) | 2023.04.23 |
---|---|
비동기 코드에서 비동기 메서드를 호출합니다. (0) | 2023.04.23 |
T-SQL에는 문자열을 연결하는 집약 기능이 있습니까? (0) | 2023.04.23 |
iOS에서 이메일 주소가 유효한지 확인합니다. (0) | 2023.04.23 |
Swift에서 UITextView에 자리 표시자 텍스트를 추가하시겠습니까? (0) | 2023.04.23 |