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
매크로 실행 동영상
반응형