Excel

문자열내 문자의 개수 세기

별동산 2024. 4. 1. 09:10
반응형

1. 일반적인 경우

 

문자열 내 문자의 개수를 셀 때는

전체 길이에서 해당 문자를 공백으로 대체한 다음의 길이를 빼면 해당 문자의 개수가 됩니다.

특정문자의 개수 세기.xlsx
0.02MB

 

 

아래와 같은 경우 0의 개수를 세려면

 

=len(c2)-len(substitute(c2,0,""))

라고 하면 됩니다.

 

0의 개수를 세면 6이 맞습니다.

 

2. 특수한 경우

이번 문제는 0이 있는 강좌수의 개수를 세는데, 0/0처럼 0이 두 번 들어간 강좌 수는 제외해야 합니다.

 

아래와 같은 경우 두 번째 줄의 26240의 0은 세면 안되므로, 0과 /0을 구분해서 계산해야 합니다.

 

두 번째 줄과 네 번째 줄은 /0이 한 번 있으므로 1이고,

세 번째 줄은 //0/0이 2번 있고, /0이 2번 있으므로 2이고,

다섯 번째 줄은 /0만 3번 있으므로 3이 답입니다.

 

3. 해법

문자 하나만 대체하면 숫자가 1이 줄지만

문자가 2개면 2가 0이 되어 2씩 줄어들게 되므로 /2를 해야 합니다.

만약 문자가 4개라면 /4를 해야죠.

 

그리고, 또 중요한 것은 /0/0은 /0이 2개인데 전체 개수에서 빼야 한다는 점입니다.

 

따라서, 전체 문자의 길이에서 /0을 공백으로 대체한 후의 길이를 빼서 2로 나누고,

전체 문자의 길이에서 /0/0의 개수를 제외한 길이를 빼서 4로 나눈 다음 2를 곱한 값을 빼야 합니다.

 

이것을 수식으로 표현하면

=(LEN(C3)-LEN(SUBSTITUTE(C3,"/0","")))/2-(LEN(C3)-LEN(SUBSTITUTE(C3,"/0/0","")))/4*2이 됩니다.

 

그런데 /4*2는 /2이고,

LEN(C3)가 앞 뒤에 -로 연결되어 있어서 0이 되므로 삭제하면

=-LEN(SUBSTITUTE(C3,"/0",""))/2+LEN(SUBSTITUTE(C3,"/0/0",""))/2가 되고,

 

앞뒤의 순서를 바꾸고 /2가 앞뒤에 있으므로 /2로 인수분해하면

=(LEN(SUBSTITUTE(C2,"/0/0",""))-LEN(SUBSTITUTE(C2,"/0","")))/2

이 됩니다.

 

툭정문자의 개수 세기(완성).xlsx
0.02MB

반응형