AA는 27번째 열, 엑셀의 마지막 열 XFD는 16,384번째 열입니다
엑셀 열 문자는 A부터 Z까지 26개 글자를 쓰고, Z 다음부터는 AA, AB처럼 두 글자로, ZZ 다음부터는 AAA처럼 세 글자로 늘어납니다. 그래서 A는 1번째, Z는 26번째, AA는 27번째, ZZ는 702번째, AAA는 703번째 열입니다. Microsoft가 밝힌 Excel 워크시트 크기는 1,048,576행 × 16,384열이므로, 지금 쓰는 Excel의 마지막 열 XFD가 16,384번째 열입니다.
위 변환기는 열 문자 칸과 열 번호 칸이 서로 따라 바뀝니다. AA10이나 $AA$10 같은 셀 주소, R10C27 같은 R1C1 주소를 넣어도 열을 읽어 번호로 바꾸고 행 번호와 R1C1 표기를 함께 보여 줍니다. 시트 머리글 띠에서 앞뒤 열을 보며 옮겨 다닐 수 있고, 표 범위를 넣으면 VLOOKUP에 넣을 범위 안 순번을, 아래 칸에서는 지금 열로 채운 수식·VBA·Python 코드를 확인할 수 있습니다. 목록 여러 개는 '여러 개 한꺼번에' 칸에서 같은 순서로 한 번에 바꿉니다.
열 문자와 번호를 오가야 하는 상황
- VLOOKUP·INDEX에 열 번호를 넣을 때: VLOOKUP의 셋째 인수는 시트 전체가 아니라 고른 범위의 첫 열을 1로 센 순번입니다. 범위가 C열에서 시작하면 F열은 6번째가 아니라 4번째이므로, 시트 열 번호와 범위 안 순번을 따로 확인해야 합니다.
- 매크로(VBA)에서 칸을 고를 때: VBA의 Cells(행, 열)은 열을 숫자로 받습니다. AA10 칸을 가리키려면 Cells(10, 27)로 써야 하고, 반대로 매크로가 돌려준 열 번호를 사람이 보는 머리글로 바꿔 읽어야 할 때도 많습니다.
- 머리글이 숫자로 바뀐 시트를 받았을 때: R1C1 참조 스타일이 켜진 엑셀은 열 머리글을 1, 2, 3으로 보이고 수식 주소도 R10C27처럼 씁니다. 동료가 "27열"이라고 말하거나 이런 주소가 적힌 자료를 받았다면 AA열로 바꿔 읽어야 합니다.
- 코드로 엑셀 파일을 다룰 때: Python의 openpyxl은 열을 1부터 세지만, pandas의 iloc이나 JavaScript 배열은 0부터 셉니다. 같은 AA열이 라이브러리에 따라 27이 되기도 하고 26이 되기도 해서, 어느 쪽 기준인지 맞추지 않으면 한 칸 옆 열을 읽게 됩니다.
- 옛 .xls 형식으로 저장하거나 넘겨받을 때: Excel 97–2003 형식은 256번째 열인 IV열까지만 담습니다. 쓰는 열이 IV를 넘는지 미리 확인하지 않으면, .xls로 저장할 때 그 오른쪽 데이터가 빠집니다.
쓰는 법
- 열 문자를 알면 왼쪽 칸에, 번호를 알면 오른쪽 칸에 넣습니다. 소문자 aa, 전각 문자 AA도 AA로 읽습니다. 방금 친 칸이 기준이고 다른 칸은 그 값을 따라 바뀝니다.
- 셀 주소를 그대로 붙여 넣어도 됩니다. AA10·$AA$10은 열 AA와 10행으로, R10C27은 10행·27번째 열로 읽고 결과 줄에 반대 표기를 보여 줍니다.
- '시트 머리글' 띠는 고른 열과 앞뒤 열을 엑셀 화면처럼 보여 줍니다. 윗줄은 평소 머리글(A1), 아랫줄은 R1C1 스타일에서 보이는 번호입니다. 머리글을 누르거나 띠를 고른 뒤 ← → 키를 누르면 한 열씩, PageUp·PageDown은 26열씩 옮깁니다.
- '표 범위' 칸에 B:F나 B2:F100처럼 범위를 넣으면 띠에 범위가 빗금으로 표시되고, 고른 열이 그 범위 안에서 몇 번째인지와 VLOOKUP 식을 보여 줍니다.
- '수식·코드로 바꾸기'에서 Excel·Google 시트, VBA, Python 탭을 고르면 지금 열로 채운 식이 나옵니다. 오른쪽 버튼으로 식만 복사할 수 있습니다.
- 목록이 여러 개면 '여러 개 한꺼번에' 칸에 붙여 넣습니다. 한 줄에 하나씩이든, 엑셀에서 복사한 탭 구분 행이든 같은 자리·같은 순서로 바꾸고, 바꿀 수 없는 값은 ?로 남기며 몇 행인지 알려 줍니다. '두 열로 복사'는 원래 값과 바꾼 값을 탭으로 이어 엑셀 두 열에 바로 붙일 수 있게 합니다.
계산 방법: 0이 없는 26진법
- 글자 값: A = 1, B = 2, …, Z = 26으로 둡니다. 보통의 26진법은 0부터 25까지 쓰지만 열 문자에는 0에 해당하는 글자가 없습니다.
- 열 문자 → 번호: 왼쪽 글자부터 '지금까지 값 × 26 + 다음 글자 값'을 되풀이합니다. XFD는 X = 24, F = 6, D = 4이므로 (24 × 26 + 6) × 26 + 4 = 16,384입니다. 자릿값으로 펼치면 24 × 676 + 6 × 26 + 4 × 1 = 16,224 + 156 + 4입니다.
- 번호 → 열 문자: 번호에서 1을 빼고 26으로 나눈 나머지가 맨 오른쪽 글자입니다(나머지 0 = A, 25 = Z). 몫으로 같은 일을 되풀이하다가 몫이 0이 되면 멈춥니다. 703은 702 ÷ 26 = 27 나머지 0 → A, 27 − 1 = 26 ÷ 26 = 1 나머지 0 → A, 1 − 1 = 0 → A이므로 AAA입니다.
- 1을 빼는 이유: 0이 없어서 Z(26)는 '10'처럼 두 자리가 되지 않고 한 글자로 남습니다. 그 대신 다음 열에서 한 자리가 늘어 AA(1 × 26 + 1 = 27)가 됩니다. 1을 빼지 않고 나누면 26을 'A@'처럼 잘못 만들게 됩니다.
- 글자 수별 열 개수: 한 글자 열은 26개, 두 글자 열은 26 × 26 = 676개(27~702번째), 세 글자 열은 26³ = 17,576개가 가능하지만 엑셀은 XFD까지라 703~16,384번째의 15,682개만 씁니다. 위 '시트 안 위치' 눈금이 이 세 구간을 로그 눈금으로 보여 줍니다.
열 문자·번호 대응표
| 열 | 번호 | 열 | 번호 | 열 | 번호 | 열 | 번호 |
|---|---|---|---|---|---|---|---|
| A | 1 | H | 8 | O | 15 | V | 22 |
| B | 2 | I | 9 | P | 16 | W | 23 |
| C | 3 | J | 10 | Q | 17 | X | 24 |
| D | 4 | K | 11 | R | 18 | Y | 25 |
| E | 5 | L | 12 | S | 19 | Z | 26 |
| F | 6 | M | 13 | T | 20 | ||
| G | 7 | N | 14 | U | 21 |
| 열 | 번호 | 열 | 번호 | 열 | 번호 | 열 | 번호 |
|---|---|---|---|---|---|---|---|
| AA | 27 | HA | 209 | OA | 391 | VA | 573 |
| BA | 53 | IA | 235 | PA | 417 | WA | 599 |
| CA | 79 | JA | 261 | QA | 443 | XA | 625 |
| DA | 105 | KA | 287 | RA | 469 | YA | 651 |
| EA | 131 | LA | 313 | SA | 495 | ZA | 677 |
| FA | 157 | MA | 339 | TA | 521 | ||
| GA | 183 | NA | 365 | UA | 547 |
| 열 | 번호 | 무엇인가 |
|---|---|---|
| Z | 26 | 한 글자 열의 마지막 |
| AZ | 52 | A로 시작하는 두 글자 열의 마지막 |
| CV | 100 | 100번째 열 |
| IV | 256 | Excel 97–2003(.xls)의 마지막 열 |
| IW | 257 | .xls에는 없는 첫 열 |
| ZZ | 702 | 두 글자 열의 마지막 |
| AAA | 703 | 세 글자 열의 처음 |
| ALL | 1,000 | 1,000번째 열 |
| NTP | 10,000 | 10,000번째 열 |
| XFD | 16,384 | Excel 2007 이후 형식의 마지막 열 |
열 머리글이 숫자로 바뀌었을 때: R1C1 참조 스타일
엑셀을 열었더니 열 머리글이 A, B, C가 아니라 1, 2, 3으로 나오고 수식이 =R2C3처럼 보인다면 R1C1 참조 스타일이 켜진 상태입니다. 이 스타일은 행과 열을 모두 숫자로 적고, R 뒤에 행 번호, C 뒤에 열 번호를 씁니다. Microsoft 설명서는 매크로에서 행·열 위치를 계산할 때 쓸모가 있고, 매크로를 기록하면 일부 명령이 이 스타일로 기록된다고 설명합니다.
- Windows Excel에서 끄기: 파일 탭 → 옵션 → 수식으로 들어가 '수식 작업' 아래 'R1C1 참조 스타일' 확인란을 해제합니다.
- Mac Excel에서 끄기: Excel 메뉴 → 기본 설정 → 계산(수식 및 목록)에서 'R1C1 참조 스타일 사용'을 해제합니다.
- 스타일은 보기 방식만 바꿉니다: 끄고 켜도 셀의 값과 수식이 가리키는 칸은 그대로이고, 머리글과 수식의 주소 표기만 바뀝니다.
| A1 표기 | R1C1 표기 | 뜻 |
|---|---|---|
| $AA$10 | R10C27 | 10행·27번째 열(AA) 칸, 절대 참조 |
| $B$2 | R2C2 | 2행·2번째 열 칸, 절대 참조 |
| $C:$C | C3 | 3번째 열 전체 |
| (지금 칸 기준) | R[-2]C | 두 행 위, 같은 열의 칸(상대 참조) |
| (지금 칸 기준) | R[2]C[2] | 두 행 아래, 두 열 오른쪽 칸(상대 참조) |
대괄호가 붙은 R[-2]C 같은 상대 참조는 수식이 들어 있는 칸을 기준으로 정해지므로 기준 칸 없이 A1 주소로 바꿀 수 없습니다. 이 변환기는 R10C27처럼 숫자가 정해진 절대 주소만 바꿉니다.
엑셀·Google 시트·VBA·Python에서 바꾸는 식
| 하려는 일 | 식 | 결과 |
|---|---|---|
| 열 문자 → 번호 | =COLUMN(AA1) | 27 |
| A2 칸에 적힌 열 문자 → 번호 | =COLUMN(INDIRECT(A2&"1")) | 27 |
| 번호 → 열 문자 | =SUBSTITUTE(ADDRESS(1,27,4),"1","") | AA |
| 행·열 번호 → A1 주소 | =ADDRESS(10,27,4) | AA10 |
| 행·열 번호 → R1C1 주소 | =ADDRESS(10,27,1,FALSE) | R10C27 |
| VBA: 열 문자 → 번호 | Range("AA1").Column | 27 |
| VBA: 번호 → 열 문자 | Split(Cells(1, 27).Address, "$")(1) | AA |
| Python(openpyxl): 열 문자 → 번호 | column_index_from_string("AA") | 27 |
| Python(openpyxl): 번호 → 열 문자 | get_column_letter(27) | AA |
- COLUMN은 참조한 칸의 열 번호를 돌려줍니다. 뒤의 행 번호는 결과와 상관이 없어서 =COLUMN(AA100)도 27입니다. 괄호를 비운 =COLUMN()은 수식이 들어 있는 칸의 열 번호입니다.
- ADDRESS의 셋째 인수 4는 행·열 모두 상대 참조라는 뜻이라 $ 없이 "AA1"을 만듭니다. 넷째 인수를 FALSE로 두면 R1C1 표기로 만듭니다. Google 시트의 ADDRESS도 같은 순서와 같은 값(4 = 행·열 상대, FALSE = R1C1)을 씁니다.
- SUBSTITUTE로 1을 지우는 식은 행을 1로 고정했기 때문에 맞습니다. =SUBSTITUTE(ADDRESS(21,27,4),"1","")처럼 다른 행을 쓰면 "AA21"에서 1만 지워져 "AA2"가 되니, 행 인수는 늘 1로 둡니다.
- VBA의 Range.Address는 따로 정하지 않으면 "$AA$1"처럼 행과 열을 모두 절대 참조로 돌려주므로, $로 나눈 두 번째 조각이 열 문자입니다. Address(ReferenceStyle:=xlR1C1)로 부르면 R1C1 표기를 받습니다.
- openpyxl의 두 함수는 1부터 셉니다. pandas의 iloc처럼 0부터 세는 위치가 필요하면 결과에서 1을 빼야 AA열이 26이 됩니다.
표 범위 안에서 몇 번째 열인지 세기 (VLOOKUP·INDEX)
VLOOKUP의 셋째 인수(열 번호)는 고른 범위의 맨 왼쪽 열을 1로 센 순번입니다. Microsoft 설명서의 예처럼 범위가 B2:D11이면 B열이 1, C열이 2입니다. 그래서 순번은 '찾을 열의 번호 − 범위 첫 열의 번호 + 1'로 구하고, 엑셀 안에서는 =COLUMN(F1)-COLUMN(C1)+1처럼 계산할 수 있습니다. INDEX의 열 번호도 같은 방식으로 셉니다.
| 표 범위 | 찾을 열 | 계산 | 순번 |
|---|---|---|---|
| C:F | F | 6 − 3 + 1 | 4 |
| B2:D11 | C | 3 − 2 + 1 | 2 |
| Y:AD | AA | 27 − 25 + 1 | 3 |
| A:Z | Z | 26 − 1 + 1 | 26 |
| H:AK | AF | 32 − 8 + 1 | 25 |
범위가 A열에서 시작할 때만 순번과 시트 열 번호가 같습니다. 범위에 열을 끼워 넣거나 지우면 VLOOKUP에 숫자로 적어 둔 순번은 저절로 바뀌지 않으므로, 순번을 COLUMN 식으로 계산해 두면 더 안전합니다.
프로그램과 파일 형식별 마지막 열
| 프로그램·형식 | 마지막 열 | 열 수 | 행 수 |
|---|---|---|---|
| Excel 2007 이후(.xlsx·.xlsm·.xlsb) | XFD | 16,384 | 1,048,576 |
| Excel 97–2003(.xls) | IV | 256 | 65,536 |
| Google 시트 | 도움말에 열 수 한도 없음 | — | — |
Microsoft 호환성 문서는 Excel 97–2003 형식이 65,536행 × 256열이고, 그 범위를 넘는 데이터는 저장되지 않는다고 설명합니다. Google 드라이브 도움말은 Google 시트로 만들거나 변환한 스프레드시트를 셀 2,000만 개(또는 100MB)까지로 정하고, 열 수 한도는 따로 적지 않습니다. 이 변환기는 Excel 기준인 XFD(16,384번째)까지 바꿉니다.
기준: Microsoft 'Excel 사양 및 제한'·호환성 문서, Google 드라이브 저장 한도 도움말을 2026년 10월 21일에 확인했습니다. 열 문자와 번호의 대응 자체는 정해진 계산이라 바뀌지 않습니다.
자주 틀리는 경우
- Z 다음을 BA로 생각하기: 십진법처럼 '9 다음 10'을 떠올리면 Z 다음을 BA로 잡기 쉽지만 실제로는 AA입니다. BA는 53번째 열입니다.
- 시트 열 번호를 VLOOKUP 순번에 그대로 넣기: 범위가 C:F인데 F열 번호 6을 넣으면 범위의 열 수(4개)보다 커서 #REF! 오류가 납니다. 범위가 더 넓었다면 오류 없이 엉뚱한 열의 값을 가져오므로 더 알아채기 어렵습니다. 순번은 4입니다.
- 0부터 세는 인덱스와 섞기: 코드에서 26을 받은 열이 실제로는 AA(27번째)일 수 있습니다. 이 변환기는 결과 줄에 '0부터 세면' 값을 함께 보여 줍니다.
- SUBSTITUTE 식의 행을 바꾸기: 번호 → 문자 식에서 ADDRESS의 첫 인수를 1이 아닌 행으로 바꾸면 행 번호 속 1이 지워져 엉뚱한 글자가 남습니다.
- 글자 O·I와 숫자 0·1을 섞어 치기: 열 이름에는 O와 I도 들어갑니다(IO는 249번째 열). 숫자 0이나 1을 대신 치면 다른 열이 되거나 'I0'처럼 0행 주소가 되어 오류가 납니다.
- 한글 자판 상태로 치기: 한/영 전환 없이 AA를 치면 'ㅁㅁ'이 들어갑니다. 이 변환기는 한글이 들어오면 바꾸지 않고 영문 입력으로 바꿔 달라고 알립니다.
한계
- Excel 워크시트 범위인 A~XFD(1~16,384번째) 열과 1~1,048,576행만 바꿉니다. XFE처럼 그 밖의 글자는 몇 번째에 해당하는지만 알리고 결과로 쓰지 않습니다.
- R[-2]C 같은 상대 R1C1 참조, 이름 정의, 'Sheet1'!A1 같은 다른 시트 참조는 읽지 않습니다. 표 범위 칸은 열만 쓰고 행 번호는 무시합니다.
- '여러 개 한꺼번에'는 낱말마다 열만 바꿉니다. AA10 같은 셀 주소는 열 번호 27로, R10C27은 열 문자 AA로 바꾸며 행은 남기지 않습니다.
- 수식 줄의 식은 쉼표로 인수를 나누는 엑셀·Google 시트를 기준으로 적었습니다. 목록 구분 기호가 세미콜론인 환경에서는 쉼표를 ;로 바꿔 넣습니다.
- 입력값은 이 기기 브라우저에서만 계산하고 어디에도 보내지 않습니다. 링크 복사를 누르면 지금 값이 주소에 들어갑니다.
출처
- 01Microsoft 지원 — Excel 사양 및 제한워크시트의 전체 행 및 열 수 1,048,576행 × 16,384열 — 2026-10-21 확인
- 02Microsoft Support — Worksheet compatibility issuesExcel 97-2003은 65,536행 × 256열, 그 밖의 데이터는 저장되지 않음
- 03Microsoft 지원 — Excel의 수식 개요R1C1 참조 스타일: 옵션 > 수식 > 수식 작업, R[-2]C·R2C2 표기, 매크로 기록
- 04Microsoft 지원 — Mac용 Excel에서 열 머리글에 문자 대신 숫자 레이블이 지정됨기본 설정 > 계산 > R1C1 참조 스타일 사용 해제
- 05Microsoft 지원 — COLUMN 함수참조한 칸의 열 번호를 돌려줌
- 06Microsoft 지원 — ADDRESS 함수abs_num 4 = 상대 참조, a1 인수 FALSE = R1C1 표기(=ADDRESS(2,3,1,FALSE,…) → R2C3)
- 07Microsoft 지원 — SUBSTITUTE 함수문자열 속 글자를 다른 글자로 바꿈
- 08Microsoft 지원 — INDIRECT 함수문자열로 적은 참조를 실제 참조로 바꿈
- 09Microsoft 지원 — VLOOKUP 함수열 번호는 범위의 맨 왼쪽 열을 1로 센 순번
- 10Microsoft Learn — Range.Address 속성(VBA)RowAbsolute·ColumnAbsolute 기본값 True($A$1), ReferenceStyle xlR1C1
- 11Microsoft Learn — Range.Column 속성(VBA)범위 첫 열의 번호를 돌려줌
- 12Google Docs 편집기 고객센터 — ADDRESSabsolute_relative_mode 4 = 행·열 상대, use_a1_notation FALSE = R1C1
- 13Google 드라이브 고객센터 — Google 드라이브에 저장할 수 있는 파일Google 시트 스프레드시트는 셀 2,000만 개 또는 100MB까지
- 14openpyxl — openpyxl.utils.cellget_column_letter·column_index_from_string(1부터 셈)
자주 묻는 질문
엑셀에서 AA열은 몇 번째 열인가요?
27번째 열입니다. A~Z가 1~26번째이고, Z 다음 열이 두 글자로 시작하는 AA라서 26 + 1 = 27입니다. AZ는 52번째, BA는 53번째, ZZ는 702번째 열입니다.
엑셀의 마지막 열은 무엇이고 몇 번째인가요?
Excel 2007 이후 형식(.xlsx 등)의 마지막 열은 XFD이고 16,384번째 열입니다. Microsoft 사양표의 워크시트 크기는 1,048,576행 × 16,384열입니다. Excel 97–2003 형식(.xls)은 256번째 열인 IV열까지만 있어서, 그보다 오른쪽 데이터는 .xls로 저장할 때 남지 않습니다.
열 번호를 알파벳(열 문자)으로 바꾸는 엑셀 수식은 무엇인가요?
=SUBSTITUTE(ADDRESS(1,27,4),"1","")처럼 씁니다. ADDRESS(1, 27, 4)가 1행의 상대 주소 "AA1"을 만들고 SUBSTITUTE가 행 번호 1을 지워 "AA"만 남깁니다. 행은 반드시 1로 둡니다. 21행으로 만들면 "AA21"에서 1만 지워져 "AA2"가 됩니다.
열 문자를 번호로 바꾸는 수식은 무엇인가요?
=COLUMN(AA1)처럼 그 열의 칸 참조를 COLUMN 함수에 넣으면 27이 나옵니다. 뒤의 행 번호는 결과에 영향을 주지 않습니다. 열 문자가 A2 칸에 글자로 적혀 있으면 =COLUMN(INDIRECT(A2&"1"))로 바꿀 수 있습니다.
엑셀 열 머리글이 A, B, C가 아니라 1, 2, 3으로 나와요.
R1C1 참조 스타일이 켜진 상태입니다. Windows Excel에서는 파일 > 옵션 > 수식으로 들어가 '수식 작업' 아래 'R1C1 참조 스타일' 확인란을 해제하면 다시 A, B, C로 보입니다. Mac에서는 Excel 메뉴 > 기본 설정 > 계산에서 'R1C1 참조 스타일 사용'을 해제합니다. 이 상태에서 R10C27로 보이는 주소는 AA10 칸입니다.
왜 Z 다음이 BA가 아니라 AA인가요?
열 문자에는 0에 해당하는 글자가 없기 때문입니다. A부터 Z까지가 1부터 26을 뜻하므로, 십진법의 9 다음 10처럼 1과 0을 쓰는 대신 한 자리가 늘어 AA(1 × 26 + 1 = 27)로 이어집니다. 그래서 번호를 글자로 바꿀 때는 단계마다 1을 빼고 26으로 나눕니다.
VLOOKUP에 넣는 열 번호와 이 변환기의 열 번호가 같나요?
범위가 A열에서 시작할 때만 같습니다. VLOOKUP의 열 번호는 고른 범위의 첫 열을 1로 센 순번이고, 이 변환기의 번호는 시트 전체에서 센 위치입니다. C:F 범위에서 F열은 6 − 3 + 1 = 4번째입니다. 위 '표 범위' 칸에 범위를 넣으면 이 순번을 바로 셉니다.
VBA나 Python에서는 어떻게 바꾸나요?
VBA에서는 Range("AA1").Column이 27을, Split(Cells(1, 27).Address, "$")(1)이 "AA"를 돌려줍니다. Python의 openpyxl에서는 column_index_from_string("AA")가 27, get_column_letter(27)이 'AA'입니다. pandas의 iloc처럼 0부터 세는 위치가 필요하면 1을 빼서 26으로 씁니다.