VBA Macro/VBA Excel

[엑셀] 글자 수 세기 (사용자 정의 함수)

루아흐뉴마 2018. 1. 11. 01:00
반응형
# 특정 문자열에서 지정한 글자가 몇개 있는지 세어주는 매크로.
# 사용자 정의 함수를 활용하여 엑셀 시트 내에서 함수처럼 쓸 수 있다.
# 문자열이 있는 셀 주소를 참조할 수도 있고, 문자열을 직접 설정할 수도 있다.
# 대소문자를 구분한다.


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



매크로 실행 동영상



반응형