
엑셀에서 다국어 데이터를 관리하다 보면 언어 감지 기능이 매우 유용합니다. 다국어 데이터셋 정리, 고객 피드백 분석, 콘텐츠 분류 등 다양한 업무에서 활용할 수 있습니다.
이 튜토리얼에서는 파워 쿼리(Power Query)와 VBA 두 가지 방법을 통해 엑셀 셀에 입력된 텍스트의 언어를 자동으로 감지하는 방법을 소개합니다.
파워 쿼리(Power Query)로 언어 자동 감지하기
파워 쿼리는 엑셀에 내장된 강력한 도구로, 데이터를 가져오고 정리·변환할 수 있을 뿐만 아니라 API 호출도 가능합니다. DetectLanguage API, LibreTranslate API 또는 유료 API 중 원하는 서비스를 파워 쿼리와 연동해 사용할 수 있습니다.
1단계: 무료 API 키 발급받기
- DetectLanguage.com 사이트에 접속합니다.
- 무료로 회원가입한 후 대시보드에서 API 키를 복사합니다.

2단계: 데이터 테이블 준비하기
감지할 텍스트 목록을 엑셀에 입력한 뒤 테이블로 변환합니다.
- 데이터 범위를 선택합니다.
- 삽입 탭 >> 테이블을 선택합니다.
- 머리글 행이 포함됨 옵션을 체크합니다.
- 확인을 클릭합니다.

- 테이블 이름을 변경합니다.
- 테이블 디자인 탭 >> 테이블 이름 항목에 Language_List를 입력합니다.

3단계: 파워 쿼리로 언어 감지 실행하기
- 테이블 내 아무 셀이나 선택합니다.
- 데이터 탭 >> 테이블/범위에서를 선택합니다.

- 홈 탭 >> 새 원본 >> 기타 원본 >> 빈 쿼리를 차례로 선택합니다.
- 쿼리 이름을 Auto Detect Language로 지정합니다.

- 홈 탭 >> 고급 편집기를 엽니다.
- 아래 코드를 복사하여 붙여넣습니다.
- 완료를 클릭합니다.
let
APIKey = "YOUR_API_KEY", // <-- Replace this
Source = Excel.CurrentWorkbook(){[Name="Language_List"]}[Content],
AddJson = Table.AddColumn(Source, "JsonBody", each
Text.ToBinary("q=" & Uri.EscapeDataString([Text]))
),
AddResponse = Table.AddColumn(AddJson, "Response", each
Json.Document(
Web.Contents("https://ws.detectlanguage.com/0.2/detect", [
Headers = [
#"Authorization" = "Bearer " & APIKey,
#"Content-Type" = "application/x-www-form-urlencoded"
],
Content = [JsonBody]
])
)
),
ExtractLang = Table.AddColumn(AddResponse, "Language", each try [Response][data][detections]{0}[language] otherwise "error"),
Final = Table.SelectColumns(ExtractLang, {"ID", "Text", "Language"})
in
Final
- 코드에서 "YOUR_API_KEY" 부분을 실제 발급받은 API 키로 교체합니다.

- 닫기 및 로드를 클릭하면 감지된 언어 코드(en, fr 등)가 담긴 Language 열이 생성됩니다.

VBA로 언어 자동 감지하기
VBA를 활용하면 무료 및 유료 API를 호출하거나 사용자 지정 함수를 만들어 언어를 자동으로 감지할 수 있습니다.
- 개발 도구 탭 >> Visual Basic을 선택합니다.

- 삽입 >> 모듈을 선택합니다.
- 아래 VBA 코드를 복사하여 붙여넣습니다.
VBA 코드:
Function Detect_Language(text As String) As String
On Error GoTo handleErr
Dim http As Object
Dim url As String
Dim response As String
Dim apiKey As String
apiKey = "YOUR_API_KEY" ' <-- Replace with your API key!
url = "https://ws.detectlanguage.com/0.2/detect?q=" & URLEncode(text)
Set http = CreateObject("MSXML2.XMLHTTP")
With http
.Open "GET", url, False
.setRequestHeader "Authorization", "Bearer " & apiKey
.send
response = .responseText
End With
' Parse JSON result for "language" code
Dim startPos As Integer
Dim endPos As Integer
startPos = InStr(response, """language"":""") + Len("""language"":""")
If startPos > Len("""language"":""") Then
endPos = InStr(startPos, response, """")
Detect_Language = Mid(response, startPos, endPos - startPos)
Else
Detect_Language = "unknown"
End If
Exit Function
handleErr:
Detect_Language = "ERROR: " & Err.Description
End Function
' Helper for URL encoding (supports most basic Unicode)
Function URLEncode(str As String) As String
Dim i As Long
Dim ch As String
Dim encoded As String
For i = 1 To Len(str)
ch = Mid(str, i, 1)
Select Case AscW(ch)
Case 48 To 57, 65 To 90, 97 To 122 ' 0-9, A-Z, a-z
encoded = encoded & ch
Case Else
encoded = encoded & "%" & Hex(AscW(ch))
End Select
Next i
URLEncode = encoded
End Function

- 코드를 저장한 후 엑셀 시트로 돌아갑니다.
- C2 셀을 선택하고 아래와 같이 UDF 함수를 입력합니다.
이 사용자 지정 함수는 텍스트의 언어를 자동으로 감지하여 해당 언어 코드를 반환합니다.

보너스: 엑셀 DETECTLANGUAGE 함수 활용하기 (Microsoft 365 및 웹 버전 전용)
Excel for Microsoft 365 또는 Excel 웹 버전을 사용 중이라면, 기본 제공되는 DETECTLANGUAGE 함수로 셀 안 텍스트의 언어를 자동으로 식별할 수 있습니다. 이 기능은 Microsoft 365 구독자와 Excel Online에서만 제공되며, 2022년 말부터 순차적으로 배포되었습니다.
- 원하는 셀을 선택하고 아래 수식을 입력합니다.
이 함수는 웹에서 결과를 가져와 자동으로 언어를 감지합니다.


지원 범위: DETECTLANGUAGE 함수는 다음 환경에서만 사용할 수 있습니다.
- Excel 웹 버전 (Excel Online)
- Microsoft 365 (일부 데스크톱 빌드에 한정, 모든 사용자에게 제공되지 않음)
- Excel 2019, Excel 2016 및 그 이전 영구 라이선스 버전에서는 사용 불가
마무리
위에서 소개한 방법들을 활용하면 엑셀 셀의 언어를 손쉽게 자동 감지할 수 있습니다. 파워 쿼리는 안정성과 확장성이 뛰어나고 데이터 변환까지 직접 처리할 수 있어 대부분의 사용자에게 권장되는 방법입니다. 반면 VBA는 가볍고 빠르게 로컬 환경에서 사용하기에 적합합니다. 작업 규모와 환경에 맞는 방법을 선택해 다국어 데이터 처리 업무의 생산성을 높여보세요.