Thursday, February 01, 2007
Excel/엑셀 VBA] 문자열 크기/길이, 글자 수/바이트 수 계산 함수; String Size Function
엑셀 비베에서는 다음과 같은 함수를 사용하여, 문자열의 사이즈(길이)를 구할 수 있습니다.
Len(): 한글 영문 구분없이, 실제의 글자 개수만 반환
LenMbcs(): 문자열을 ANSI(한글 윈도우의 경우에는, 한글 완성형에 해당) 인코딩으로 간주하여, 바이트 수 계산. 영문은 1바이트, 한글은 2바이트. 단, 이 함수는 비베에 내장되어 있지 않기에 아래 예제에서처럼 직접 만들어 주어야 함.
LenB(): 문자열을 16비트 유니코드로 간주하여 바이트 수 계산. 한글/영문 관계 없이 무조건 1글자는 2바이트
(엑셀에서 Alt+F11키를 눌러, 비베 에디터를 실행하고, 비베 에디터 메뉴의, "삽입 > 모듈"을 선택한 후, 다음 코드를 붙여 넣습니다.)
비베 에디터에서 F5 키를 누르거나, 엑셀에서 Alt+F8 키를 누르면 VBA 매크로가 실행됩니다.
비베(VBA)가 아닌, 엑셀의 셀에서, 내장 함수로 문자열 길이 구하기: ▶▶ Excel/엑셀] 셀에서, 문자열 길이, 크기(글자 수/바이트 수) 구하기; String Size
VBA 배열의 길이 구하기: ▶▶ 엑셀/VBA매크로] 배열 크기 사이즈, 요소 개수 구하기; VB Array Size, Length
Len(): 한글 영문 구분없이, 실제의 글자 개수만 반환
LenMbcs(): 문자열을 ANSI(한글 윈도우의 경우에는, 한글 완성형에 해당) 인코딩으로 간주하여, 바이트 수 계산. 영문은 1바이트, 한글은 2바이트. 단, 이 함수는 비베에 내장되어 있지 않기에 아래 예제에서처럼 직접 만들어 주어야 함.
LenB(): 문자열을 16비트 유니코드로 간주하여 바이트 수 계산. 한글/영문 관계 없이 무조건 1글자는 2바이트
문자열 길이 (크기; 사이즈) 구하기 예제
(엑셀에서 Alt+F11키를 눌러, 비베 에디터를 실행하고, 비베 에디터 메뉴의, "삽입 > 모듈"을 선택한 후, 다음 코드를 붙여 넣습니다.)
비베 에디터에서 F5 키를 누르거나, 엑셀에서 Alt+F8 키를 누르면 VBA 매크로가 실행됩니다.
Sub String_Length_Example()
e = "ABCD"
h = "가나다라"
'''''''''''''''''''''''''
' 단순히 글자 개수 구하기
result = Len(e)
MsgBox result & "글자"
' 출력 결과: 4글자
result = Len(h)
MsgBox result & "글자"
' 출력 결과: 4글자
'''''''''''''''''''''''''
' 한글 완성형 바이트 수 구하기
result = LenMbcs(e)
MsgBox result & "바이트(ANSI)"
' 출력 결과: 4바이트(ANSI)
result = LenMbcs(h)
MsgBox result & "바이트(ANSI)"
' 출력 결과: 8바이트(ANSI)
'''''''''''''''''''''''''
' 유니코드 바이트 수 구하기
result = LenB(e)
MsgBox result & "바이트(Unicode)"
' 출력 결과: 8바이트(Unicode)
result = LenB(h)
MsgBox result & "바이트(Unicode)"
' 출력 결과: 8바이트(Unicode)
End Sub
' 한글 완성형 문자열의 바이트 수 구하기 함수
Function LenMbcs(ByVal str As String)
LenMbcs = LenB(StrConv(str, vbFromUnicode))
End Function
e = "ABCD"
h = "가나다라"
'''''''''''''''''''''''''
' 단순히 글자 개수 구하기
result = Len(e)
MsgBox result & "글자"
' 출력 결과: 4글자
result = Len(h)
MsgBox result & "글자"
' 출력 결과: 4글자
'''''''''''''''''''''''''
' 한글 완성형 바이트 수 구하기
result = LenMbcs(e)
MsgBox result & "바이트(ANSI)"
' 출력 결과: 4바이트(ANSI)
result = LenMbcs(h)
MsgBox result & "바이트(ANSI)"
' 출력 결과: 8바이트(ANSI)
'''''''''''''''''''''''''
' 유니코드 바이트 수 구하기
result = LenB(e)
MsgBox result & "바이트(Unicode)"
' 출력 결과: 8바이트(Unicode)
result = LenB(h)
MsgBox result & "바이트(Unicode)"
' 출력 결과: 8바이트(Unicode)
End Sub
' 한글 완성형 문자열의 바이트 수 구하기 함수
Function LenMbcs(ByVal str As String)
LenMbcs = LenB(StrConv(str, vbFromUnicode))
End Function
비베(VBA)가 아닌, 엑셀의 셀에서, 내장 함수로 문자열 길이 구하기: ▶▶ Excel/엑셀] 셀에서, 문자열 길이, 크기(글자 수/바이트 수) 구하기; String Size
VBA 배열의 길이 구하기: ▶▶ 엑셀/VBA매크로] 배열 크기 사이즈, 요소 개수 구하기; VB Array Size, Length
tag: office
엑셀 Excel | 워드 Word | VBA 매크로 | 오피스
<< Home