1. 문제
아래와 같이 텍스트에 금액이 포함되어 있을 때 금액을 지우려고 하는 것입니다.
규칙은 금액은 쉼표가 1개 또는 2개가 있고,
일반 숫자는 쉼표가 없이 숫자만 있습니다.
2. 해결 방안
Find 함수는 와일드카드 적용이 안되는데,
Search 함수는 와일드카드 적용이 돼서
Search 함수를 이용해서, 컴마가 하나만 있는지 2개가 있는지에 따라 처리를 달리하는 것입니다.
단계별로 이해할 수 있도록 수식을 작성했습니다.
B1셀 : =SEARCH("?,???",A1) 첫 번째 컴마 앞의 숫자 위치를 찾습니다.
C1셀 : =SEARCH("?,???,",A1) 컴마가 2개 있는 경우 첫 번째 컴마 앞의 숫자 위치를 찾습니다.
위 2개는 위치가 중요한 것이 아니고 컴마가 1개인지 2개인지 판단하기 위한 기준입니다.
D1셀 : =MID(A1,FIND(" ",A1,FIND(",",A1)-4)+1,IF(NOT(ISERROR(SEARCH("?,???,",A1))),FIND(",",A1)+4+3-FIND(" ",A1,FIND(",",A1)-4),IF(NOT(ISERROR(SEARCH("?,???",A1))),FIND(",",A1)+3-FIND(" ",A1,FIND(",",A1)-4),"")))
(컴마가 2개 있을 경우)
find 함수로 찾은 첫 번째 컴마 위치에서 4를 뺀 위치부터 공백의 위치를 찾아서 1을 더한 값을
Mid 함수의 두 번째 인수로 하는 부분은 공통이고
MID(A1,FIND(" ",A1,FIND(",",A1)-4)+1,
세 번째 인수인 길이를 구하는 부분만 다릅니다.
세 번째 인수인 길이를 구하는데,
두 번째 컴마 위치는 첫 번째 컴마 위치 + 4이고, 숫자의 끝은 다시 3을 더해야 하며,
숫자의 길이는 여기서 위에서 구한 공백의 위치를 빼면 됩니다.
(컴마가 1개 있을 경우)
세 번째 인수인 길이를 구해야 하는데, 숫자의 끝 위치는 첫 번째 컴마 위치+3이므로 여기서 위에서 구한 공백의 위치를 빼면 됩니다.
(숫자를 공백으로 대체)
E1셀 : =SUBSTITUTE(A1,MID(A1,FIND(" ",A1,FIND(",",A1)-4)+1,IF(NOT(ISERROR(SEARCH("?,???,",A1))),FIND(",",A1)+4+3-FIND(" ",A1,FIND(",",A1)-4),IF(NOT(ISERROR(SEARCH("?,???",A1))),FIND(",",A1)+3-FIND(" ",A1,FIND(",",A1)-4),""))),"")
Substitute 함수를 이용해서 위에서 구한 숫자를 공백으로 대체하는 것입니다.
(Let 함수를 이용하면)
Let함수가 가능하다면 길이는 좀 길더라도 아래와 같이 이해하기 쉽게 작성할 수 있습니다.
F1셀 : =LET(쉼표한개,NOT(ISERROR(SEARCH("?,???",A1))),쉼표2개,NOT(ISERROR(SEARCH("?,???,",A1))),공백위치,FIND(" ",A1,FIND(",",A1)-4),첫번째컴마,FIND(",",A1),SUBSTITUTE(A1,MID(A1,공백위치+1,IF(쉼표2개,첫번째컴마+4+3-공백위치,IF(쉼표한개,첫번째컴마+3-공백위치,""))),""))
'Excel' 카테고리의 다른 글
문자열내 문자의 개수 세기 (0) | 2024.04.01 |
---|---|
중복 값 제거하고 세기 (2) | 2024.03.26 |
병합된 셀의 개수 세기 (0) | 2024.03.22 |
문자열로 된 수식의 값 계산하기 (0) | 2024.03.18 |
단어 포함 합계 구하기 (0) | 2024.03.18 |