Computer >> 컴퓨터 >  >> 소프트웨어 >> Office

파워 쿼리와 VBA로 엑셀(Excel) 셀 언어 자동 감지하기

파워 쿼리와 VBA로 엑셀(Excel) 셀 언어 자동 감지하기

엑셀에서 다국어 데이터를 관리하다 보면 언어 감지 기능이 매우 유용합니다. 다국어 데이터셋 정리, 고객 피드백 분석, 콘텐츠 분류 등 다양한 업무에서 활용할 수 있습니다.

이 튜토리얼에서는 파워 쿼리(Power Query)VBA 두 가지 방법을 통해 엑셀 셀에 입력된 텍스트의 언어를 자동으로 감지하는 방법을 소개합니다.

파워 쿼리(Power Query)로 언어 자동 감지하기

파워 쿼리는 엑셀에 내장된 강력한 도구로, 데이터를 가져오고 정리·변환할 수 있을 뿐만 아니라 API 호출도 가능합니다. DetectLanguage API, LibreTranslate API 또는 유료 API 중 원하는 서비스를 파워 쿼리와 연동해 사용할 수 있습니다.

1단계: 무료 API 키 발급받기

  • DetectLanguage.com 사이트에 접속합니다.
  • 무료로 회원가입한 후 대시보드에서 API 키를 복사합니다.

파워 쿼리와 VBA로 엑셀(Excel) 셀 언어 자동 감지하기

2단계: 데이터 테이블 준비하기

감지할 텍스트 목록을 엑셀에 입력한 뒤 테이블로 변환합니다.

  • 데이터 범위를 선택합니다.
  • 삽입 탭 >> 테이블을 선택합니다.
  • 머리글 행이 포함됨 옵션을 체크합니다.
  • 확인을 클릭합니다.

파워 쿼리와 VBA로 엑셀(Excel) 셀 언어 자동 감지하기

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

파워 쿼리와 VBA로 엑셀(Excel) 셀 언어 자동 감지하기

3단계: 파워 쿼리로 언어 감지 실행하기

  • 테이블 내 아무 셀이나 선택합니다.
  • 데이터 탭 >> 테이블/범위에서를 선택합니다.

파워 쿼리와 VBA로 엑셀(Excel) 셀 언어 자동 감지하기

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

파워 쿼리와 VBA로 엑셀(Excel) 셀 언어 자동 감지하기

  • 탭 >> 고급 편집기를 엽니다.
  • 아래 코드를 복사하여 붙여넣습니다.
  • 완료를 클릭합니다.
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 키로 교체합니다.

파워 쿼리와 VBA로 엑셀(Excel) 셀 언어 자동 감지하기

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

파워 쿼리와 VBA로 엑셀(Excel) 셀 언어 자동 감지하기

VBA로 언어 자동 감지하기

VBA를 활용하면 무료 및 유료 API를 호출하거나 사용자 지정 함수를 만들어 언어를 자동으로 감지할 수 있습니다.

  • 개발 도구 탭 >> Visual Basic을 선택합니다.

파워 쿼리와 VBA로 엑셀(Excel) 셀 언어 자동 감지하기

  • 삽입 >> 모듈을 선택합니다.
  • 아래 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

파워 쿼리와 VBA로 엑셀(Excel) 셀 언어 자동 감지하기

  • 코드를 저장한 후 엑셀 시트로 돌아갑니다.
  • C2 셀을 선택하고 아래와 같이 UDF 함수를 입력합니다.

이 사용자 지정 함수는 텍스트의 언어를 자동으로 감지하여 해당 언어 코드를 반환합니다.

파워 쿼리와 VBA로 엑셀(Excel) 셀 언어 자동 감지하기

보너스: 엑셀 DETECTLANGUAGE 함수 활용하기 (Microsoft 365 및 웹 버전 전용)

Excel for Microsoft 365 또는 Excel 웹 버전을 사용 중이라면, 기본 제공되는 DETECTLANGUAGE 함수로 셀 안 텍스트의 언어를 자동으로 식별할 수 있습니다. 이 기능은 Microsoft 365 구독자와 Excel Online에서만 제공되며, 2022년 말부터 순차적으로 배포되었습니다.

  • 원하는 셀을 선택하고 아래 수식을 입력합니다.

이 함수는 웹에서 결과를 가져와 자동으로 언어를 감지합니다.

파워 쿼리와 VBA로 엑셀(Excel) 셀 언어 자동 감지하기

파워 쿼리와 VBA로 엑셀(Excel) 셀 언어 자동 감지하기

지원 범위: DETECTLANGUAGE 함수는 다음 환경에서만 사용할 수 있습니다.

  • Excel 웹 버전 (Excel Online)
  • Microsoft 365 (일부 데스크톱 빌드에 한정, 모든 사용자에게 제공되지 않음)
  • Excel 2019, Excel 2016 및 그 이전 영구 라이선스 버전에서는 사용 불가

마무리

위에서 소개한 방법들을 활용하면 엑셀 셀의 언어를 손쉽게 자동 감지할 수 있습니다. 파워 쿼리는 안정성과 확장성이 뛰어나고 데이터 변환까지 직접 처리할 수 있어 대부분의 사용자에게 권장되는 방법입니다. 반면 VBA는 가볍고 빠르게 로컬 환경에서 사용하기에 적합합니다. 작업 규모와 환경에 맞는 방법을 선택해 다국어 데이터 처리 업무의 생산성을 높여보세요.