엑셀·구글시트 자동화 실험No. 476
VLOOKUP 대신 XLOOKUP으로 바꾸는 순서와 확인할 것

열이 늘어날 때 흔들리는 수식
기존 수식이 =VLOOKUP(A2,$F$2:$H$100,3,FALSE)라면 A2의 값을 F열에서 찾아 H열의 값을 가져오는 구조입니다. 여기서 숫자 3은 선택한 범위 안에서 결과가 있는 열의 순서를 뜻합니다. 중간에 열을 끼워 넣거나 목록 구성을 바꾸면 이 숫자가 의도한 항목을 계속 가리키는지 살펴야 합니다. 수식이 오류 없이 계산되더라도 다른 항목을 가져오는 상황은 따로 점검해야 합니다.
전환 전에 먼저 정할 것은 검색 기준입니다. 상품 코드로 금액을 찾는지, 관리 번호로 상태를 찾는지 구분합니다. 같은 이름이 반복될 수 있는 목록에서는 이름만으로 대상을 정하기 어렵습니다. 검색할 값이 중복되는지도 확인합니다. XLOOKUP은 기본 설정에서 처음 일치하는 결과를 가져오므로, 함수를 바꿔도 중복된 자료의 뜻까지 정리되지는 않습니다.
기존 파일의 마지막 인수도 함께 살핍니다. FALSE 또는 0이면 정확히 일치하는 값을 찾는 설정입니다. TRUE를 쓰거나 인수를 생략한 수식은 근사 일치를 의도했는지 먼저 확인합니다. 구간별 요율처럼 경계값을 찾는 계산을 정확한 코드 검색과 같은 방식으로 옮기면 결과가 달라질 수 있습니다. 전환 대상은 수식의 모양보다 계산 목적을 기준으로 나눕니다.

짚고 가기
전환 전 확인할 것
- 정확·근사 일치 구분
- 검색 범위 따로 지정
- 열 번호를 결과 범위로 변경
함수 이름만 바꾸면 막히는 이유
첫 번째로 떠올리기 쉬운 방식은 기존 수식에서 VLOOKUP이라는 글자만 XLOOKUP으로 고치는 방법입니다. 하지만 VLOOKUP의 두 번째 인수는 검색 열과 결과 열을 묶은 범위이고, XLOOKUP의 두 번째 인수는 값을 찾을 범위입니다. 세 번째 인수도 열 번호에서 결과 범위로 바뀝니다. 따라서 기존의 범위와 숫자를 그대로 남기는 일괄 치환은 맞지 않습니다.
앞의 수식은 =XLOOKUP(A2,$F$2:$F$100,$H$2:$H$100,"미등록",0)처럼 다시 구성합니다. A2를 F열에서 찾고 같은 행의 H열 값을 가져온다는 뜻입니다. "미등록"은 일치하는 항목이 없을 때 내보낼 문구이며, 마지막 0은 정확히 일치하는 값을 찾도록 지정한 설정입니다. XLOOKUP은 이 일치 방식을 기본으로 사용하지만, 전환 과정에서는 의도를 드러내도록 적을 수 있습니다.
이 단계에서 범위의 시작 행과 끝 행을 맞춥니다. 검색 범위가 F2:F100이면 결과 범위도 대응하는 행으로 지정합니다. 범위의 길이가 다르면 오류가 생길 수 있고, 길이가 같아도 시작 행이 어긋나면 다른 행의 값을 연결하게 됩니다. 아래로 복사할 수식이라면 원본 범위의 달러 기호도 확인합니다. 검색값 A2가 다음 행에서 A3으로 바뀌는 동안 원본 범위는 고정되어야 하는 구조인지 구분합니다.
함수 이름을 바꾸기 전에 검색 기준과 결과 범위의 대응부터 확인합니다

Q새 수식은 어디에 쓰나요?
기존 결과를 남겨 두고 옆의 빈 열에 작성합니다.
범위를 나눠 다시 연결하는 순서
두 번째 시도에서는 기존 결과를 남겨 두고 옆의 빈 열에 새 수식을 작성하는 방식으로 접근합니다. 원래 계산을 바로 덮어쓰지 않으면 차이가 난 행을 확인하기 쉽습니다. 검색값, 검색 범위, 결과 범위를 각각 짚은 뒤 누락 문구를 정합니다. 계산에 사용할 결과라면 숫자와 문자가 섞일 때 후속 수식이 어떻게 반응하는지도 함께 살핍니다.
- 기존 수식의 검색값과 일치 방식을 확인
- 검색 범위와 결과 범위를 같은 행에 맞춰 지정
- 찾지 못한 항목의 처리 방식 결정
- 기존 결과와 새 결과를 행별로 비교
- 차이가 난 이유를 확인한 뒤 적용 범위 확대
검증용 열에서는 =B2=C2처럼 기존 결과와 새 결과를 비교할 수 있습니다. FALSE가 나온 행은 원본 값과 수식 조건을 확인합니다. 화면에 같은 숫자로 보여도 소수점 아래 값이 다르거나, 한쪽이 문자로 저장된 숫자이면 비교 결과가 달라질 수 있습니다. 표시 자릿수만 보고 같다고 판단하지 않고 실제 셀 값과 자료 형식을 살핍니다.
모든 행이 같다는 사실만으로 검토를 끝내지는 않습니다. 기존 수식에도 잘못 연결된 행이 있을 수 있기 때문입니다. 정상 코드가 있는 행, 목록에 없는 코드가 있는 행, 같은 코드가 반복되는 행을 골라 원본 목록과 직접 대조합니다. 실행 속도를 비교하려면 같은 파일과 계산 조건으로 기준을 정해 직접 측정합니다. 함수 교체만으로 처리 시간이 줄어든다고 단정하지 않습니다.

하나씩 확인
원본과 직접 대조
- 정상 코드가 있는 행
- 목록에 없는 코드의 행
- 같은 코드가 반복되는 행
잘 맞는 구조와 별도 점검이 필요한 구조
검색할 열의 오른쪽에서 값을 가져오는 목록은 기존 연결을 비교적 그대로 옮길 수 있습니다. 검색할 열의 왼쪽 값을 가져와야 하는 목록은 XLOOKUP에서 검색 범위와 결과 범위를 따로 지정해 구성합니다. 반면 같은 코드가 반복되는 이력 목록은 어느 기록을 선택할지부터 결정합니다. 이 차이를 정리하면 수식이 짧아지는 일과 계산 기준이 달라지는 일을 구분할 수 있습니다.
예를 들어 F열의 코드로 D열의 상태를 찾는 경우에는 =XLOOKUP(A2,$F$2:$F$100,$D$2:$D$100,"미등록",0)을 사용합니다. 결과 범위가 검색 범위의 왼쪽에 있어도 지정할 수 있습니다. 다만 D열과 F열이 같은 행의 기록을 나타내야 합니다. 한쪽 열만 따로 정렬한 목록이라면 수식이 실행되어도 코드와 상태의 연결은 틀릴 수 있습니다.
반복된 코드 중 아래쪽 기록을 선택하려면 검색 방향을 마지막 행부터 시작하도록 설정할 수 있습니다. 마지막 인수에 음수 1을 쓰는 방식입니다. 이때 아래쪽 기록이 실제로 가장 최근 자료인지 확인해야 합니다. 작성 날짜와 행의 순서가 다르면 역방향 검색만으로 최신 기록을 고를 수 없습니다. 먼저 날짜 기준과 정렬 규칙을 정리합니다.
호환성도 적용 조건입니다. 공유받는 사람이 사용하는 엑셀에서 XLOOKUP을 계산할 수 있는지 확인합니다. 구글시트로 옮기는 파일은 같은 함수 이름이 있다는 이유만으로 결과를 같다고 판단하지 않습니다. 파일을 여는 환경에서 수식이 유지되는지, 참조 범위가 달라지지 않는지, 오류가 생기는 행은 없는지 실제 문서로 대조합니다.
새 수식의 결과가 맞는지는 기존 값과 원본 기록을 함께 대조해 판단합니다
다음에는 입력값과 누락 처리를 정리합니다

누락 원인 확인
| 상황 | 살펴볼 점 |
|---|---|
| 미등록 코드 | 원본 등록 여부 |
| 입력값 차이 | 공백 여부 |
| 자료 형식 | 숫자·문자 혼용 |
전환 뒤에는 찾지 못한 값이 생기는 이유를 나눠 관리합니다. 원본 목록에 아직 등록되지 않은 코드인지, 입력 과정에서 공백이 붙었는지, 숫자와 문자가 섞였는지 확인합니다. 수식의 누락 문구를 빈칸으로 바꾸면 화면은 정돈되지만 확인해야 할 행이 눈에 덜 띕니다. 검토 단계에서는 "미등록"처럼 원인을 추적할 수 있는 문구를 두고, 이후 사용 목적에 맞춰 조정합니다.
앞자리 0이 있는 코드는 자료 형식을 특히 주의합니다. 0012라는 코드와 숫자 12를 같은 항목으로 볼지 먼저 정해야 합니다. 모양을 맞추려고 일괄 숫자 변환을 하면 구분에 필요한 자릿수가 사라질 수 있습니다. 반대로 금액처럼 계산해야 하는 값은 문자로 들어온 원인을 확인합니다. 검색이 실패할 때마다 수식에 변환 기능을 덧붙이기 전에 입력 규칙을 정리하는 편이 관리하기 쉽습니다.
찾지 못한 항목을 처리하는 인수와 전체 오류를 감추는 처리는 구분합니다. XLOOKUP의 누락 문구는 검색값이 없는 경우를 다루며, 잘못된 참조나 범위 구성까지 고쳐 주지는 않습니다. 오류를 전부 빈칸으로 바꾸면 수정할 지점을 놓칠 수 있습니다. 새 행을 추가했을 때 고정 범위 밖으로 벗어나는지도 마지막으로 확인합니다.
다음에 바꿀 대상은 함수 이름보다 자료를 쌓는 방식입니다. 코드 작성 규칙을 맞추고, 중복 기록의 선택 기준과 원본 범위 확장 방식을 문서에 남깁니다. 이후 수식을 수정할 사람이 검색 기준과 결과 항목을 바로 읽을 수 있어야 합니다. XLOOKUP 전환은 기존 계산과 원본 기록이 일치하는지 확인하고, 누락된 행의 처리 기준까지 정했을 때 완료로 판단합니다.
· 6분