반응형
# 특정 문자열에서 지정한 글자가 몇개 있는지 세어주는 매크로.
# 사용자 정의 함수를 활용하여 엑셀 시트 내에서 함수처럼 쓸 수 있다.
# 문자열이 있는 셀 주소를 참조할 수도 있고, 문자열을 직접 설정할 수도 있다.
# 대소문자를 구분한다.
VBA Code #1
Option Explicit Function cntChr(ByVal target As Variant, ByVal txt As Variant) Dim i As Long Dim cnt As Long Dim start As Long cnt = 0 start = 1 i = 1 Do If InStr(start, target, txt) > 0 Then '찾는 글자가 있으면(>0) cnt = cnt + 1 '카운트를 증가하고 start = InStr(start, target, txt) + 1 '찾은 글자가 있는 지점의 다음 글자를 새로운 시작지점으로 초기화 Else cntChr = 0 '찾는 글자가 없으면 0을 반환 Exit Do '루프 종료 End If i = i + 1 Loop Until i = Len(target) '무한루프 방지 보험용: i를 증가시켜 문자열 길이만큼 도달하면 종료 cntChr = cnt '최종 카운트값 반환 End Function
# 특정 문자열에서 지정한 글자가 몇개 있는지 세어주는 매크로.
# #1과 결과는 같지만 다른 방식으로 하는 경우
# 기존 문자열과 기존 문자열에서 찾는 문자열을 제거한 두 문자열을 비교해서 그 차이를 카운트 값으로 반환하는 형식이다.
# 한 줄로 끝낼 수 있다.
VBA Code #2
Option Explicit Function cntChr(ByVal target As Variant, ByVal txt As Variant) cntChr = Len(target) - Len(Replace(target, txt, "")) End Function
매크로 실행 동영상
반응형
'VBA Macro > VBA Excel' 카테고리의 다른 글
[엑셀] VBA로 스택 구현 (0) | 2018.01.14 |
---|---|
[엑셀] 유사 단어의 일치도(%) 산출 매크로 (11) | 2018.01.13 |
[엑셀] DOM 방식의 웹페이지 정보 가져오기 (사이트 추천) (0) | 2017.12.22 |
[엑셀] 같은 내용인 경우에 셀 병합하는 매크로 (0) | 2017.12.19 |
[엑셀] XML 파싱하기 #1 - 웹페이지 소스코드 따오기(기본코드) (0) | 2017.12.02 |