본문 바로가기
생활속 소소한 팁

[VBA 연습] 셀 안에 특정 문자 개수 세기 ( 단일셀 / 범위셀 )

by ujuni 2023. 12. 1.
반응형

셀 안에 특정 문자가 포함되었는지 여부를 판별하는 방법. 혹은 해당 문자가 몇 개나 포함되어 있는지에 대해 알고 싶은 경우 아래를 참고해 보세요.

저는 특정 셀에 값을 입력할 때, 특정 양식을 충족하는지 여부에도 사용하고 있습니다. 예를 들어 날짜 관련 데이터 입력 시 2023-12-01의 형식을 받고 싶을 땐, - 가 두 개 포함되었는지 여부를 판별하는 식으로 씁니다. 

[목차]
1. 사용되는 함수
2. 하나의 셀에 특정 문자 개수 세기
3. 범위 셀에 특정 문자 개수 세기

 

아래 설명드릴 코드를 살펴보고 결과값을 확인해 보시도록 엑셀 파일을 첨부하였습니다.

필요하시면 다운로드하세요.

 

 

엑셀 vba관련 팁.xlsm
0.03MB

↑클릭해 주세요

 


1. 사용되는 함수

LEN(값) : 해당 값의 글자수를 구해주는 함수입니다. 예를 들어 Len("가나다")라고 입력하면, "3"이라는 값이 출력되죠.
Replace(값, 바꾸려는 문자, 원하는 문자) : 문자열 안에 특정 문자를 원하는 문자로 바꿔줍니다. 

 

두 가지 함수를 통해 특정 문자를 포함하는지 여부를 판별할 수 있습니다.

예를 들어 "가나 1다 21"이라는 문자열에 1이 포함되었는지를 알고 싶다면 아래의 코드를 통해 알 수 있죠.

 

Len("가나 1다 21")-Len(Replace("가나 1다 21", "1", "")을 봅시다.

원래 글자수에서 1을 삭제해 버린 글자수를 빼주면 1의 개수만큼 글자수가 차이 나게 되겠죠? "가나 1다 21" 대신 셀주소를 적어주면. 해당 셀주소 내에 찾고 싶은 문자가 포함되어 있는지 판별이 가능해지는 겁니다.


2. 하나의 셀에 특정 문자 개수 세기

 

위 사진을 참고해 보세요. 앞서 설명해 드린 것과 동일한 코드입니다. b3 셀에 있는 문자열에 1이라는 문자가 몇 개나 포함되었는지를 구하여 n에 배정하고, n을 출력해 주는 코드입니다.

실행 시 값은 2가 나오겠죠.

 


3. 범위 셀에 특정 문자 개수 세기

범위에 해당하는 코드도 살펴봅시다. 기본 개념은 유사하나 for문을 사용하여 셀마다 해당 값을 구하여 n2에 누적합계를 입력해 줬습니다. 이를 좀 다듬으면 아래와 같은 코드로 만들 수 도있습니다.

시작 셀 주소와 마지막 셀 주소를 받아 범위를 지정해 주고, for문을 두 번 돌려 해당 범위 내의 문자 개수를 찾을 수 있습니다.

만약 s, e, t를 코드 내에 직접 입력하지 않고 inputbox 등을 통하여 입력받는 식으로 해도 깔끔할 것 같네요.


 

반응형