BookTranslator
BookTranslator

수식이나 드롭다운을 깨뜨리지 않고 Excel 스프레드시트를 번역하는 방법

.xlsx 파일에서 셀 단위 번역기가 건너뛰는 텍스트(수식 텍스트, 서식 있는 텍스트, 링크, 차트, 매크로)를 찾아내고, 번역기가 깨뜨릴 수 있는 드롭다운과 코드를 수정하며, 무료 스크립트와 테스트 워크북으로 결과를 확인하세요.

BookTranslator

BookTranslator Team

28분 읽기

Excel 통합 문서 전체를 번역하려면 셀을 하나씩 번역하는 대신 .xlsx 파일을 문서 번역기에 업로드하세요. Excel 자체의 검토 > 번역 명령은 선택한 텍스트에만 작동하므로(Microsoft 지원), 레이블에는 괜찮지만 가격 목록에는 느립니다. 파일 번역기는 모든 텍스트 셀을 읽고 번역한 뒤 동일한 주소에 다시 기록하므로 수식, 숫자, 날짜가 원래 위치에 그대로 유지됩니다.

하지만 파일 번역기가 읽지 않은 텍스트가 무엇인지는 알려주지 않습니다. 수식 안에 입력된 텍스트, 한 단어만 굵게 표시된 셀, 링크, 메모, 차트 제목 등은 셀 단위 번역에서 모두 원래 언어로 남을 수 있습니다. 또한 두 가지가 깨질 수 있습니다. 허용 값이 번역되지 않은 드롭다운과 번역되어 버린 제품 코드입니다.

우리는 이러한 각 위치에 텍스트가 있는 두 시트짜리 테스트 워크북을 만들고, 텍스트가 어디에 있는지 나열하는 무료 검사기를 작성한 뒤, BookTranslator가 사용하는 스프레드시트 처리 방식을 로컬에서 재현하여 워크북을 실행했습니다. 이 가이드에서는 어떤 결과가 나왔는지, 업로드 전에 무엇을 변경해야 하는지, 번역된 파일을 확인하는 방법을 보여줍니다.

빠른 답변: 워크북에서 번역되는 항목

텍스트 위치테스트 예시BookTranslator로 번역됨?해야 할 일
헤더 행을 포함한 일반 텍스트 셀"파란색 노트", "가격"예없음
숫자, 날짜, 부울4.5, 2026-10-30그대로 유지됨대상 시장에 맞게 숫자 형식 확인
수식=C2*D2그대로 유지됨없음
수식 내부 텍스트=IF(D2>5,"In stock","Low stock")아니요단어를 셀로 이동(2단계 참조)
서식이 혼합된 셀한정판 펜아니요, 셀 전체를 건너뜁니다먼저 서식을 지우거나 직접 번역하세요
하이퍼링크 셀"제품 페이지"아니요번역 후 링크 텍스트를 편집하세요
드롭다운 셀 안의 값"문구류"예, 하지만 드롭다운 목록은 아닙니다목록을 수정하거나, 셀이 더 이상 유효하지 않게 됩니다
문자가 포함된 코드"A-77", "B-09"번역기로 전송됨번역 후 확인하세요
숫자나 기호만 있는 코드"00123"그대로 유지됨없음
메모 및 댓글"출시 전 공급업체 이름 확인"아니요직접 번역하거나 삭제하세요
시트 이름 및 명명된 범위"제품", PriceRange아니요, 시트 간 수식이 계속 작동합니다수식을 확인한 후 꼭 필요한 경우에만 시트 이름을 수동으로 변경하세요
차트 및 매크로막대형 차트, VBA 프로젝트테스트에서 번역된 파일에서 제거됨원본을 보관하고 나중에 다시 작성하세요(아래 참조)

이전 .xls 파일은 허용되지 않습니다. Excel에서 열어 .xlsx로 저장한 후 진행하세요. 매크로 사용 .xlsm 파일은 허용되지만, 업로드하기 전에 매크로 섹션을 읽어보세요. 번역된 파일에는 매크로가 없으며, 다운로드 파일이 여전히 .xlsm으로 끝나는 경우 열기 전에 .xlsx로 이름을 변경하세요.

1단계: 통합 문서에서 검사기 실행

check_xlsx_text.py를 다운로드하여 파일에서 실행하세요:

python3 check_xlsx_text.py "Price list.xlsx"

Python 3만 필요하며 파일을 변경하지 않고 읽습니다. 샘플 통합 문서의 요약은 다음과 같습니다:

Counts by location:
  cell         code, ID or address        2
  cell         link text                  1
  cell         mixed formatting           1
  cell         plain text                 15
  comments     comment or note text       1
  dropdown     list of allowed values     1
  formula text text inside a formula      6
  sheet        sheet name                 2
  workbook     defined name               1

Plain text cells (translated by a cell-by-cell translator): 15
Items that need a decision before you upload: 12

개수 아래에는 Products!E2 formula text 'In stock'와 같이 각 항목의 시트와 셀이 나열됩니다. 이 목록을 2단계의 할 일 목록으로 사용하세요. 통합 문서에 차트, 텍스트 상자, 피벗 테이블 또는 매크로 프로젝트가 있는 경우 개수에도 표시됩니다.

README에는 샘플 통합 문서 설명, 파일 해시 목록, 그리고 이를 빌드하는 스크립트 링크가 있어 테스트를 반복할 수 있습니다.

테스트 통합 문서에 발생한 일

샘플 통합 문서를 BookTranslator의 스프레드시트 핸들러가 사용하는 코드(2026-11-01에 동일한 라이브러리 ExcelJS 4.4.0으로 로컬에서 재현)로 실행했습니다. 실제 번역 대신 각 셀 텍스트 앞에 "[DE]"를 추가하는 자리 표시자를 사용했습니다. 이렇게 하면 언어 모델이 테스트에 개입하지 않으므로 결과는 파일 처리에서 전송, 유지, 삭제되는 항목만 보여줍니다.

핸들러는 각 시트를 셀 단위로 읽습니다. 셀에 일반 텍스트 값이 있는 경우에만 번역을 위해 전송하며, 숫자, 구두점, 기호로만 구성된 텍스트는 건너뜁니다. 셀 그리드의 다른 모든 항목은 변경 없이 복사됩니다. 그런 다음 BookTranslator는 번역된 통합 문서와 이중 언어 통합 문서 두 파일을 반환합니다.

번역된 통합 문서

이 파일을 사용하세요. 6개의 수식, 7개의 숫자 및 날짜, 통화 및 날짜 형식, 병합된 셀, 메모, 드롭다운 규칙, 명명된 범위가 모두 변경 없이 반환되었습니다. 9개의 헤더 셀과 기타 일반 텍스트 셀은 제자리에서 번역되었습니다. 세 가지 결과에 주의해야 합니다:

수식 내부의 텍스트는 원본 언어로 유지됩니다. Status 열은 =IF(D2>5,"In stock","Low stock")를 사용했습니다. 수식은 텍스트 셀이 아니므로 핸들러가 읽지 않으며, "In stock"은 모든 행에서 영어로 유지됩니다. & 또는 CONCAT으로 연결된 텍스트와 HYPERLINK 내부의 텍스트에도 동일하게 적용됩니다.

번역된 드롭다운 값이 더 이상 목록과 일치하지 않습니다. H2 셀에는 "Stationery, Office, Art"를 허용하는 드롭다운이 있었습니다. 셀 값은 번역되었지만 목록은 셀이 아닌 유효성 검사 규칙에 저장되므로 번역되지 않았습니다. 검사기의 비교 모드에서 다음과 같이 보고되었습니다:

Problems: 3
  Products!A3: code changed: 'A-77' -> '[DE] A-77'
  Products!A4: code changed: 'B-09' -> '[DE] B-09'
  Products!H2: '[DE] Stationery' is not in its dropdown list ['Art', 'Office', 'Stationery']

Excel은 유효성 검사 규칙을 위반하는 값을 유지하지만, 다음 사람이 드롭다운을 열면 이전 선택지만 표시되며 데이터 > 잘못된 데이터에 동그라미 표시를 하면 해당 셀이 표시됩니다.

문자가 포함된 코드는 번역기로 전송됩니다. "00123"은 숫자만 포함하므로 건너뛰었습니다. "A-77"과 "B-09"는 문자를 포함하므로 전송되었습니다. 코드가 변경 없이 반환되는지는 모델에 따라 다르며, 파일 처리에서는 이를 보호하지 않습니다. "A-77-Artikel"로 반환된 SKU는 이를 사용하는 모든 조회를 중단시킵니다.

이중 언어 통합 문서

이중 언어 파일은 번역된 셀이 하나 이상 있는 모든 열의 오른쪽에 "Name (Translated)"와 같은 헤더가 있는 번역 열을 삽입합니다. 셀 값을 새 열로 이동하지만 셀 서식을 이동하거나 수식을 업데이트하지는 않습니다. 테스트에서:

  • 가격 형식 $#,##0.00은 제품 이름이 있는 C 열에 남아 있었고, 가격은 해당 형식 없이 E 열로 이동했습니다;
  • 날짜 형식은 수량이 들어간 G열에 그대로 남아, 수량 10이 날짜로 표시되었습니다.
  • =C2*D2는 K열로 이동했지만 여전히 C2와 D2를 가리켰고, 이제 그 셀에는 제품명과 번역문이 들어 있어 45를 반환할 수 없게 되었습니다.
  • Summary 시트에서는 =SUM(Products!F2:F4)가 이제 비어 있는 번역 열을 합산했습니다.

따라서 이중 언어 통합 문서는 원문과 번역문을 나란히 읽기 위한 것이지 계산용이 아닙니다. 편집하거나 여기서 수식을 복사하지 마세요.

차트와 매크로

통합 문서의 별도 사본에 차트와 매크로 프로젝트를 추가하고 Excel이 저장하는 방식대로 저장했습니다. 둘 다 번역 파일이나 이중 언어 파일에는 없었습니다. ExcelJS는 워크시트, 스타일, 공유 텍스트, 그림, 표, 메모를 읽고 쓰지만 차트 파트나 VBA 프로젝트를 위한 코드가 없어 저장할 때 이를 제외합니다. 같은 코드에 피벗 테이블을 위한 기능도 없으므로 피벗 테이블도 삭제될 것으로 예상됩니다(테스트하지는 않았습니다). 또한 이 핸들러는 출력을 .xlsx 파일로 저장하는데, 이 형식은 매크로를 담을 수 없습니다.

테스트의 또 다른 한계: 샘플 통합 문서를 ExcelJS 자체로 만들었는데, 이는 서식, 병합, 유효성 검사 규칙을 유지하는 데 가장 유리한 경우입니다. Excel에서 저장한 통합 문서에는 ExcelJS가 모델링하지 않는 기능이 포함될 수 있으므로, 동일한 깔끔한 결과를 가정하지 말고 아래 비교 단계를 자신의 파일에서 실행하세요.

2단계: 업로드 전에 통합 문서 준비하기

사본에서 작업하세요. 검사기가 변경할 셀을 알려줍니다.

  1. 수식 텍스트를 셀로 옮기세요. 단어를 작은 "Labels" 시트에 넣고 수식이 이를 가리키게 하세요: =IF(D2>5,Labels!$A$1,Labels!$A$2). 레이블 셀은 일반 텍스트이므로 번역되고, 모든 수식이 번역을 가져옵니다. 같은 문구가 전체 열에 반복되는 경향이 있기 때문에 이 한 가지 변경만으로 대부분의 "수식 텍스트" 개수가 해결됩니다.
  2. 드롭다운 목록을 셀로 옮기세요. 데이터 > 데이터 유효성 검사에서 원본을 직접 입력한 목록(Stationery,Office,Art)에서 Labels 시트의 범위(=Labels!$B$1:$B$3)로 변경하세요. 그러면 목록 값이 이를 사용하는 셀과 함께 번역됩니다. 나중에 몇 개의 셀을 확인하세요: 모델이 "Stationery"를 두 위치에서 동일하게 번역한 경우에만 드롭다운이 번역된 값을 허용합니다.
  3. 혼합 서식을 지우세요. 한 단어만 굵게 또는 색상이 지정된 셀은 서식 있는 실행으로 저장되어 완전히 건너뛰어집니다. 셀을 선택하고 홈 > 지우기 > 서식 지우기를 선택하거나 다시 입력한 다음 번역 후 굵게를 다시 적용하세요. 이런 셀이 많으면 먼저 기록해 두세요.
  4. 메모와 주석 처리 방법을 결정하세요. 이들은 번역되지 않습니다. 번역 서비스로 보내고 싶지 않은 검토 메모는 삭제하고 나머지는 수동으로 번역하세요.
  5. 매크로 통합 문서를 .xlsx로 저장하세요. .xlsm을 원본으로 유지하세요. .xlsx 사본을 번역한 다음, 번역된 텍스트 열을 원본에 다시 복사하거나(선택하여 붙여넣기 > 값, 텍스트 열만, 수식을 덮어쓰지 않도록) VBA 모듈을 내보내 번역된 파일로 가져오세요.
  6. 차트는 나중에 처리하세요. 차트에는 텍스트가 거의 없습니다: 제목, 축 제목, 그리고 보통 헤더 셀에서 가져오는 범례뿐입니다. 동일한 범위에서 번역된 통합 문서에 차트를 다시 만들거나, 번역된 텍스트 열을 원본 통합 문서에 다시 붙여넣어 차트와 피벗 테이블이 스스로 업데이트되도록 하는 것이 종종 더 빠릅니다.

3단계: 전체 파일 번역하기

문서 번역기 페이지에서 .xlsx를 업로드하고 대상 언어를 선택한 후 결제 전에 표시된 가격을 확인하세요. 전체 파일 업로드는 한 작업에서 모든 시트의 모든 텍스트 셀을 번역하므로 3행과 3,000행에서 제품 이름을 동일하게 유지하기가 더 쉽습니다. 번역 용어집 작성 가이드에서는 달라지면 안 되는 용어를 고정하는 방법을 설명합니다.

작업이 완료되면 기록 페이지에서 두 가지 다운로드를 모두 제공합니다. 번역된 통합 문서를 사용하세요. 이중 언어 통합 문서는 두 언어를 모두 읽는 사람과 문구를 검토할 때만 여세요.

Google 스프레드시트에서 작업하는 경우 두 가지 다른 경로가 있습니다. Google 번역의 문서 탭은 최대 10MB의 .xlsx 파일을 허용합니다(Google 번역 고객센터). Google Docs 번역 가이드에서 옵션을 비교합니다. 또한 스프레드시트에는 GOOGLETRANSLATE(text, source_language, target_language) 함수(Google Docs 편집기 고객센터)가 있어 원본 옆의 새 열에 채울 수 있습니다. 짧은 레이블 한 열에는 편리하지만 결과가 수식이므로 시트를 공유하기 전에 값으로 붙여넣으세요. DeepL도 문서를 번역합니다. 문서 제한이 실제로 의미하는 바를 참조하세요. 무엇을 사용하든 먼저 원본에서 검사기를 실행하세요: 수식, 링크, 차트 내부의 텍스트는 어떤 도구가 파일을 읽든 같은 위치에 있습니다.

4단계: 번역된 통합 문서 확인하기

  1. 비교 모드를 실행하세요. 원본과 번역된 파일을 나란히 놓으세요:

    python3 check_xlsx_text.py --compare "Price list.xlsx" "Price list (translated).xlsx"
    

    모든 수식, 숫자, 날짜가 변경되지 않았는지, 문자가 포함된 코드가 정확히 그대로 반환되었는지, 모든 드롭다운 값이 목록에 있는지 확인합니다. 번역된 통합 문서에만 사용하세요. 이중 언어 파일은 열이 이동하므로 거의 모든 셀이 보고됩니다.

  2. 다시 계산하세요. 레이블을 수정한 후에도 수식에 이전 텍스트가 표시되면 F9를 누르거나(또는 수식 > 지금 계산) 실행하세요.

  3. 남은 항목을 번역하세요. 1단계의 검사기 목록을 사용하세요: 링크 텍스트, 메모, 차트 제목, 서식을 지운 셀.

  4. 잘린 텍스트를 확인하세요. 번역문은 원문보다 긴 경우가 많고, 짧은 문자열일수록 더 많이 늘어납니다. W3C는 IBM 가이드라인을 인용하여 영어에서 유럽 언어로 번역할 때 10자 이하 텍스트의 평균 확장률이 200–300%라고 밝히고 있습니다(W3C). 열 머리글은 짧기 때문에 잘리는 부분이 있으면 열 너비를 넓히거나 텍스트 줄 바꿈을 켜세요.

  5. 숫자와 날짜 표시를 확인하세요. 값 자체는 변경되지 않았지만, 독일어 사용자에게는 "4.50"이 "4,50"으로 표시되어야 할 수 있습니다. 이는 번역이 아니라 셀 서식이나 지역 설정의 문제입니다.

  6. 함수 이름을 "고치지" 마세요. 동료의 프랑스어 Excel에 SUM 대신 SOMME가 표시된다면, 이는 Excel이 자체적으로 지역화된 함수 이름을 표시하는 것일 뿐 수식은 동일합니다.

  7. 오른쪽에서 왼쪽으로 읽는 시트를 설정하세요. 아랍어, 히브리어, 페르시아어, 우르두어의 경우 페이지 레이아웃 > 시트 오른쪽에서 왼쪽으로를 켜고 셀 정렬을 확인하세요.

  8. 고객에게 전달되는 문서(예: 가격표나 제품 카탈로그)라면 유창한 독자가 검토하도록 하세요. 기계 번역은 좋은 초안일 뿐 최종본이 아닙니다.

CSV 및 TSV 파일

.csv 파일에는 수식, 서식, 드롭다운이 없으므로 위에서 언급한 문제 대부분이 사라집니다. 하지만 세 가지 점이 다릅니다:

  • 머리글 행은 번역되지 않습니다. 처리기는 첫 번째 행을 머리글로 간주하고 데이터 행만 번역합니다. 머리글은 직접 번역하거나, 업로드 전에 데이터 행으로 복사했다가 나중에 다시 옮기세요.
  • 열 전체가 하나로 번역됩니다. 열의 어떤 셀에든 문자가 있으면, 코드를 포함하여 문자가 있는 모든 셀이 전송됩니다. 비교 모드는 .xlsx만 읽으므로 CSV 코드 열은 직접 확인하세요: 두 파일에서 해당 열을 하나의 시트로 복사한 후 =EXACT(A2,B2)로 두 열을 비교하세요.
  • CSV는 쉼표로 구분되어 반환됩니다. 원본에서 사용한 구분 기호와 관계없이 번역된 CSV는 쉼표를 사용하며, .tsv 파일은 탭을 유지합니다. 테스트에서 세미콜론으로 구분된 CSV가 쉼표로 구분되어 반환되었고, "4,50"과 같은 소수점 쉼표는 따옴표 안에 유지되었습니다. 파일은 바이트 순서 표시(BOM)가 없는 UTF-8입니다. Microsoft에 따르면 Excel은 BOM이 있는 UTF-8 CSV를 정상적으로 열며, 그렇지 않은 경우 데이터 > 데이터 가져오기 > 텍스트/CSV에서 가져오기를 권장합니다(Microsoft 지원). 파일을 두 번 클릭했을 때 악센트가 깨져 보이면 대신 그 방법으로 가져오세요.

데이터가 수식이 있는 통합 문서에 있다면 .xlsx를 번역하세요. 번역을 위해 CSV로 내보내면 모든 수식이 사라집니다.

일반적인 문제

문제가능한 원인해결 방법
열 전체가 여전히 "In stock"이라고 표시됨해당 단어가 IF 수식 안에 있음단어를 레이블 셀로 옮기고 수식이 해당 셀을 참조하도록 함
드롭다운이 번역된 값을 거부함허용 값이 유효성 검사 규칙에 직접 입력되어 있음규칙의 원본을 셀 범위로 변경하고 해당 범위를 번역함
제품 코드가 변경됨문자가 포함되어 있어 번역기로 전송됨원본에서 수정하고, 매번 전달 시 비교 모드를 실행함
셀 하나가 전혀 번역되지 않았습니다서식이 섞여 있거나 링크입니다서식을 지우거나 링크 텍스트를 편집한 후 다시 번역하거나 수동으로 수정하세요
차트나 매크로가 사라졌습니다파일을 다시 작성하는 데 사용된 라이브러리가 이를 저장하지 않습니다.xlsx 사본을 번역하고 번역된 텍스트를 원본으로 다시 옮기세요
이중 언어 파일에서 합계가 잘못되었습니다추가된 열이 값은 이동시키지만 수식이나 서식은 이동시키지 않습니다계산에는 번역된 통합 문서를 사용하세요
번역된 CSV에서 악센트가 깨져 보입니다Excel이 잘못된 인코딩을 추측했습니다데이터 > 데이터 가져오기 > 텍스트/CSV에서 가져오세요
업로드가 거부되었습니다파일이 .xls이거나 열려면 비밀번호가 필요합니다열기 암호 없이 일반 .xlsx로 저장하세요(시트 보호만 있는 것은 괜찮습니다)

같은 원리가 슬라이드에도 적용됩니다. PowerPoint 프레젠테이션도 번역자가 건너뛰는 위치에 텍스트를 보관하며, 해당 글의 검사기도 이 글의 검사기와 같은 방식으로 작동합니다.

관련 글