한글은 한자어를 사용해서 개념적으로 어려운 단어를 만들고 음절을 생략하는 식으로 약어를 만듭니다.
영어에는 단어를 쓰고 난 후에 각 단어의 첫 영자를 따서 약어를 만듭니다.
축구에 관련된 각종 행정을 집행하는 단체를 말할 때는,
- 한글 : 대한 축구협회 → 축협
- 영어 : Football Association → FA, 한국 축구협회는 Korea Football Association → KFA
같은 방식입니다.
이런 기능은 기본 함수로 있을법한데 없는 모양입니다.(그냥 제가 모르는 건지도요. ㅎㅎㅎ)
어떤 영자에서 이렇게 이니셜을 추출해주는 방법을 알아보겠습니다.
1. VBA 소스코드
VBA로 함수를 만드는 법을 먼저 알아보겠습니다.
① Alt + F11 혹은 시트에 오른쪽 클릭 후 소스보기를 선택합니다.
② 화면 왼쪽에 프로젝트창에서 시트부분에 마우스 오른쪽 클릭하여 삽입 → 모듈을 선택합니다.
③ 새로 만들어진 모듈에 입력합니다.

입력해야 하는 소스코는 아래와 같습니다.
< 소스코드 >
Function getinitial(inputValue As Variant) As String
Dim words() As String
Dim abbreviation As String
Dim i As Integer
Dim stopWords As Variant
Dim word As String
'① 이니셜에서 제외하고 싶은 문자를 선택합니다.
stopWords = Array("of", "to", "for", "and", "the", "a", "an", "in", "on", "with")
'② 셀에서 값을 불러왔다면 이 구문이 작동합니다.
If TypeOf inputValue Is Range Then
inputValue = inputValue.Value
End If
'③ 공백 " " 을 기준으로 글자를 나눕니다.
words = Split(inputValue, " ")
abbreviation = ""
For i = LBound(words) To UBound(words)
'④ 머리글자만 따서 글자를 변수 "abbreviation"에 누적하여 입력합니다.
'--------------------------------------------------------------------------------
word = LCase(words(i))
If IsError(Application.Match(word, stopWords, 0)) Then
abbreviation = abbreviation & UCase(Left(words(i), 1))
End If
'--------------------------------------------------------------------------------
'⑤ 제외하고 싶은 글자가 없다면 위의 문구를 주석처리하고 아래만 사용합니다.
'abbreviation = abbreviation & UCase(Left(words(i), 1))
Next i
getinitial = abbreviation
End Function
위에 주석처리를 해 두었지만 동작 순서는 다음과 같습니다.
① 이니셜에서 제외하고 싶은 문자를 선택합니다.
② 셀에서 값을 불러왔다면 따로 복사해서 변수에 붙여 넣습니다.
③ 공백 " " 을 기준으로 글자를 나눕니다.
④ 머리글자만 따서 글자를 변수 "abbreviation"에 누적하여 입력합니다.(대문자로 만듭니다.)
⑤ 제외하고 싶은 글자가 없다면 if문을 사용하지 않습니다.
이 소스를 입력하고 저장하면 본 구문에서 getinitial 함수라는 새로운 함수가 만들어집니다.
2. 사용하는 법 보기
이제 새로 추가한 함수를 살펴보도록하겠습니다.
정상적으로 동작하는 경우 보통 함수처럼 빠른 완성을 사용할 수 있습니다.
복사해서 붙여넣을 수도 있고 정상적으로 작동합니다.

영문으로 풀었을때 of는 제외되는 것까지 확인되네요
3. 배열함수로 만들기
VBA는 조금 어렵게 느껴질 수도 있습니다.
이 기능은 기본 함수의 콤비네이션으로 만들 수도 있습니다.
똑같은 기능으로 만들 수는 없고 제한적으로 이용합니다.
=UPPER(LEFT(A1, 1)) & UPPER(MID(A1, FIND(" ", A1) + 1, 1)) & UPPER(MID(A1, FIND(" ", A1, FIND(" ", A1) + 1) + 1, 1)) & UPPER(MID(A1, FIND(" ", A1, FIND(" ", A1, FIND(" ", A1) + 1) + 1) + 1, 1))
위의 함수는 4개로 이루어진 단어에만 작동합니다.
예를 들어, aa bb cc dd → ABCD로 동작합니다.
이렇게 복잡한 함수는 VBA로 만드는 쪽이 더 간편하고 유연합니다.
VBA에 거부감이 있어 함수로 사용하는 분은 이참에 한번 가벼운 사용을 배워보기를 추천드립니다.