Excel

여러 개중 원하는 위치의 문자 찾기

별동산 2024. 1. 17. 09:00
반응형
특정문자의 마지막위치이후 문자열 가져오기(완성)2.xlsx
0.01MB

 

1. 문제

아래와 같은 문자열을 보면 ₩가 여러 번 나오는데, 첫 번째 ₩부터 두 번째 ₩전까지의 문자, 두 번째부터 세 번째 전까지의 문자를 추출해 보겠습니다.

 
 

2. 마지막 기호 다음의 문자열을 추출하는 Lambda 식

 
마지막 반복 문자 이후의 문자열 추출하기 (2)에서 했던 방법을 유사하게 적용하면 됩니다.
 
아래는 마지막으로 나오는 ₩다음의 문자열을 추출하기 위한 Lambda 식으로
재귀 호출을 사용해서 last_word를 반복 실행하면서 ₩가 나올 때마다 그다음의 문자열을 잘라내서 last_word 함수에 대입한 다음 마지막으로 남는 문자열을 반환하는 것입니다.

=lambda(textString, findChars,
	if(iserror(find(findChars, textString)),textString,
	last_word(
	mid(textString,find(findChars,textString)+1,len(textString)),
	findChars)
	)
)

 
 

3. 지정한 번째에 해당하는 문자열 추출하기

 
지정한 번째에 해당하는 문자열을 추출하기 위해서는
위와 같이 계속해서 찾는 문자열 이후의 문자열에서 그다음 문자열 이전까지를 발췌해 내면 됩니다.
 
몇 번째를 찾아야 하므로 인수로 n을 입력하고, n을 1씩 줄여 나가면서, n이 0일 때 값을 출력해야 합니다.
 
따라서, 수식은 아래와 같습니다.

=lambda(textString, findChars, n,
	if(n=0,
		mid(textString,1,find(findChars,textString)-1),
		nthChar(
            mid(textString,find(findChars,textString)+1,len(textString)),
            findChars,
            n-1
		)
	)
)

 
수식에서 이름 관리자를 열고,
이름을 nthChar라고 하고,
참조 대상에 위 수식을 복사한 후 붙여 넣으면 됩니다.

A7셀에
=nthChar(A2,"\",1)
이라고 입력하니 아래와 같이 첫 번째와 두 번째 ₩사이의 문자열인 '시스템'을 잘 출력했습니다.

 
그런데 문제는 마지막 ₩에서는 ₩가 더 이상 존재하지 않으므로,
다시 말해 A8셀에 
=nthChar(A2,"\",5)라고 입력하면
#VALUE! 에러가 발생합니다. 

 
따라서, 원하는 문자를 찾지 못할 때는 문자열을 그대로 출력하도록 해야 합니다.
 
수정한 수식은 아래와 같으며, iserror가 조건에서 먼저 와야 합니다.

=lambda(textString, findChars, n,
	if(isError(find(findChars,textString)),textString,
    	if(n=0,
            mid(textString,1,find(findChars,textString)-1),		
            nthChar(	
                mid(textString,find(findChars,textString)+1,len(textString)),
                findChars,
                n-1
            )
		)
	)
)

 
이제 A8셀에 값 '모든파일추출.txt'가 맞게 출력됩니다.

 
=nthChar(A2,"\",4)로 수정해도 '새 폴더 (2)'라고 맞게 출력됩니다.

 

n번째 문자열 추출하기.xlsx
0.01MB
반응형