Excel

Lambda 함수 매개변수 2개 이상인 경우(2)

별동산 2023. 1. 19. 08:16
반응형

아래와 같이 문자열에서 제외 문자를 제거한 문자열을 구해보겠습니다.



1. 논리


제외문자를 하나씩 돌아가면서 문자열에 해당하는 제외 문자가 있다면 공백으로 바꾸면 됩니다.

어디서 가져온 것인데, 머리가 좋네요.
왼쪽부터 한 글자씩 비교하고, 문자열의 길이보다 하나 작은 길이만큼 오른쪽에서 계속 가져오면 마지막까지 비교하게 됩니다.

 

2. 수식

=LAMBDA(textString,excludeChars,
	IF(excludeChars="", textString,                 
		RemoveChars(
			SUBSTITUTE(textString, LEFT(excludeChars, 1),""),            
			RIGHT(excludeChars, LEN(excludeChars)-1)
		)
	) 
)


수식 > 이름 관리자에서 새로 만들기 버튼을 누른 후

이름 관리자


이름은 RemoveChars이고, 참조대상에는 위 수식을 복사해서 붙여넣습니다.

이름 관리자를 이용한 사용자 정의 함수 만들기


그러면 아래와 같이 RemoveChars란 이름에 Lambda 수식이 할당됩니다. 오른쪽 아래 닫기 버튼을 누릅니다.

 

3. 수식의 이해

가. 매개변수

Lambda 함수의 인수는 textString과 excludeChars 2개이며,
안에 있는 RemoveChars에서도 수식의 결과를 textString과 excludeChars로 대입합니다.

 

나. If 함수

IF(excludeChars="", textString,
    RemoveChars(
    ...,
    ...
    )
}


excludeChars가 공백이면 남아 있는 문자열을 반환하고,
아니면 RemoveChars를 반복 실행합니다.

 

다. RemoveChars

RemoveChars(
    SUBSTITUTE(textString, LEFT(excludeChars, 1),""),
    RIGHT(excludeChars, LEN(excludeChars)-1)
)

RemoveChars는 두 개 매개변수를 반환하는데,

SUBSTITUTE(textString, LEFT(excludeChars, 1),"")는 문자열을 대체하는 Substitute함수를 사용해서 textString에서 제외 문자의 왼쪽 1글자에 해당하는 것을 찾아 공백으로 대체한 결과값을 반환합니다.

RIGHT(excludeChars, LEN(excludeChars)-1)는 제외 문자열(excludeChars)에서 그 길이(Len)에서 1을 뺀 길이만큼 오른쪽부터(Right) 문자열을 가져오므로 앞에서 하나씩 문자가 제외되게 됩니다.

 

4. 수식의 실행

C2셀에 =re까지 입력하면 re로 시작하는 함수명이 표시되는데, 세번째에 RemoveChars 함수명이 보이므로 마우스로 더블 클릭하여 입력합니다.

이름 관리자를 이용한 사용자 정의 함수가 함수 목록에 표시됨


그리고, 첫번째 매개변수로는 A2셀, 두번째 매개변수로는 B2셀을 지정한 후 괄호를 닫고 엔터 키를 누릅니다.
그러면 숫자를 제외한 한글과 공백이 표시됩니다.

문자열에서 숫자가 제거된 결과



C2셀의 채우기 핸들을 C5셀까지 끌면 수식이 복사되는데,

 


C3셀은 주소에서 시,구,로란 글자만 제거한 것이고,
C5셀은 영문에서 알파벳 소문자만 제외해서 대문자 B, 쉼표(,) 그리고 !와 공백이 그대로 남아 있습니다.
C6셀은 특수문자 *!@#$%를 제거한 문자만 표시됩니다.

문자열에서 특정 문자 제거하기(완성).xlsx
0.01MB

반응형