엑셀 2021 이하 버전이나 Microsoft 365 이전 버전을 사용하고 계시는 분들은 CHOOSECOLS 함수를 사용할 수 없어 답답하셨을 거예요. 특히 특정 열만 선택해서 데이터를 추출하는 작업이 필요할 때 말이죠. 🤔
오늘은 CHOOSECOLS 함수 없이도 기존 엑셀 함수들을 조합해서 동일한 결과를 얻는 방법을 알려드릴게요.
🔍 핵심 CHOOSECOLS 함수 기능을 INDEX, COLUMN, INDIRECT 함수 조합으로 완벽 대체 가능!
📋 CHOOSECOLS 함수란?
CHOOSECOLS 함수는 Microsoft 365와 Excel 2021에서 도입된 함수로, 배열이나 범위에서 특정 열만 선택해서 반환하는 기능을 제공해요.
기본 구문
=CHOOSECOLS(배열, 열_번호1, [열_번호2], ...)
매개변수 설명
- 배열: 열을 선택할 원본 데이터 범위
- 열_번호: 선택할 열의 번호 (1부터 시작)
- 여러 열_번호: 여러 열을 선택할 경우 쉼표로 구분
📌 NOTE : CHOOSECOLS 함수는 동적 배열 함수로, 결과가 여러 셀로 자동 확장됩니다. 결과를 담기에 충분한 빈 셀이 없으면 #SPILL! ( #분산! ) 오류가 발생할 수 있어요.
🔧 대체 방법: INDEX + COLUMN 조합
여러 대체 방법이 있겠지만, 가장 기본적인 대체 방법은 INDEX 함수와 COLUMN 함수를 조합하는 거예요. 이 방법은 연속된 열과 여러 열을 선택할 때 효과적이죠.
기본 구문
=INDEX(원본범위, ROW(원본범위)-ROW(첫번째셀)+1, {선택할열번호})
사용 예제
=INDEX(A1:E10, ROW(A1:E10)-ROW(A1)+1, {1,3,5})
이 수식은 A1:E10 범위에서 1번째, 3번째, 5번째 열만 선택해서 반환해요.
📊 실무 활용 예제
예제 데이터 (CSV 형식)
직원명,부서,급여,보너스,평가점수,지역
김철수,영업,3500000,500000,85,서울
박영희,마케팅,3800000,600000,90,부산
이민수,개발,4200000,700000,88,대구
정수진,인사,3600000,550000,82,인천
최미영,영업,3700000,650000,87,광주
한지민,개발,4500000,800000,92,서울
송태호,마케팅,3900000,620000,86,대전
김상우,인사,3500000,520000,81,울산
이나영,영업,3650000,580000,89,청주
박성민,개발,4100000,750000,91,수원
윤서연,마케팅,3750000,600000,84,포항
조민호,인사,3550000,530000,83,천안
예제 1: 기본 - 특정 칼럼 하나 추출
문제: "직원명" 칼럼만 뽑고 싶어요!
해결: INDEX 함수로 A열 데이터를 가져옵니다.
=INDEX(A2:E13, , 1)
- 설명: A2:E13 범위에서 1번 칼럼(직원명)을 선택해요.
- 결과: 직원급여정보 테이블에서 '직원명' 칼럼 데이터 출력
예제 2: 헤더 이름으로 칼럼 선택
문제: "부서" 칼럼을 헤더 이름으로 찾아서 추출하고 싶어요!
해결: MATCH 로 칼럼 위치를 찾고 INDEX 로 데이터를 가져옵니다.
=INDEX(A2:F13, , MATCH("부서", A1:F1, 0))
MATCH 로 "부서"의 위치(2번 칼럼)를 찾은 뒤 INDEX 로 해당 칼럼을 추출해요.
📌 NOTE : 동적배열이 지원되지 않는 이전 엑셀에서는
부서열과 동일한 범위를 출력 범위로 잡고 수식입력 후 CTRL+SHIFT+ENTER 로 마무리 해야 해요.
예제 3: 중급 활용 (비연속 열 선택)
=INDEX(A2:F13, ROW(A2:A13)-ROW(A2)+1, {1,4,6})
직원명, 보너스, 지역처럼 비연속적인 열들을 선택하는 방법이에요. 1열, 4열, 6열만 골라서 추출하여 필요한 정보만 간추려 볼 수 있죠.
이 수식의 핵심은
ㄱ. ROW(A2:A13) : 범위 각 셀의 행번호를 얻고
ㄴ. ROW(A2) : 첫 행의 행번호를 얻어요.
ㄷ. ROW(A2:A13)-ROW(A2)+1 : 각행번호-첫행번호+1 로 1로 시작하는 각 행번호를 얻어요.
ㄹ. {1,4,6} : 3번째 인수로 배열을 전달해 1행, 4행, 6행을 얻어요.
예제 4: 고급 활용 (조건부 열 선택)
=IFNA(INDEX(A2:F13, ROW(A2:F13)-ROW(A2)+1, IF(E2:E13>=85, {1,2,3,5}, {1,2,3})),"")
평가점수가 85점 이상인 직원은 직원명, 부서, 급여, 평가점수를 보여주고, 그렇지 않은 경우는 평가점수를 제외하고 보여주는 조건부 열 선택 방법이에요.
⚠️ 사용 시 주의사항 및 오류 정리
1. #REF! 오류
=INDEX(A1:C10, ROW(A1:C10)-ROW(A1)+1, {1,2,5})
📌 NOTE: 원본 범위보다 큰 열 번호를 지정하면 #REF! 오류가 발생해요. 열 번호가 원본 범위 내에 있는지 확인하세요.
2. 배열 수식 입력 문제
=INDEX(A1:E10, ROW(A1:E10)-ROW(A1)+1, {1,3,5})
📌 NOTE: 이 수식은 배열 수식으로 입력해야 해요. Excel 2019 이하에서는 Ctrl+Shift+Enter로 입력하세요.
3. 성능 저하 문제
=INDEX(A1:XFD1048576, ROW(A1:XFD1048576)-ROW(A1)+1, {1,3,5})
📌 NOTE: 너무 큰 범위를 지정하면 계산 속도가 느려져요. 필요한 범위만 지정하는 것이 좋아요.
4. 동적 배열 미지원 문제
=INDEX(A1:E10, ROW(A1:E10)-ROW(A1)+1, {1,3,5})
📌 NOTE: 구버전 엑셀에서는 결과가 자동으로 확장되지 않아요. 먼저 범위 선택하고 수식 입력하거나, 필요한 만큼 수식을 복사해서 사용하세요.
🔗 관련 함수
CHOOSECOLS 함수 대체 작업과 관련된 유용한 함수들이에요:
- INDEX: 특정 위치의 값을 반환
- COLUMN: 열 번호를 반환
- ROW: 행 번호를 반환
- INDIRECT: 텍스트로 된 참조를 실제 참조로 변환
- ADDRESS: 행과 열 번호로 셀 주소를 생성
- IFERROR: 오류 발생 시 대체값 반환
💡 추가 팁과 노하우
팁 1: 열 번호 대신 열 이름 사용
=INDEX(A1:F10, ROW(A1:F10)-ROW(A1)+1, MATCH({"직원명","급여"}, A1:F1, 0))
열 번호 대신 MATCH 함수로 열 이름을 사용하면 더 직관적이고 유지보수하기 쉬워요.
팁 2: 동적 범위 설정
=INDEX(INDIRECT("A1:F"&COUNTA(A:A)), ROW(INDIRECT("A1:F"&COUNTA(A:A)))-ROW(A1)+1, {1,3,5})
데이터 범위가 변동될 때 자동으로 조정되는 수식이에요.
관련함수: 엑셀 COUNT/COUNTA 함수 완벽 가이드 - 기본부터 실무활용까지 숨겨진 차이점 총정리
🎯 마무리
엑셀 CHOOSECOLS 함수가 없어도 기존 함수들을 조합해서 동일한 결과를 얻을 수 있어요! INDEX 와 ROW 함수 조합이 가장 실용적이고, 쉽게 활용할 수 있어요. CHOOSEROWS 함수는 INDEX 와 COLUMN 함수 조합으로 대체 가능해요.
구버전 엑셀을 사용하시는 분들도 이제 특정 열만 선택해서 데이터를 추출하는 작업을 효율적으로 할 수 있을 거예요. 실무에서 자주 사용하게 될 테니 꼭 연습해보세요! 😊
이 글이 도움이 되셨다면 공감 버튼을 눌러주시고, 주변 동료들에게도 공유해주세요. 여러분의 엑셀 실력 향상에 조금이나마 도움이 되었으면 좋겠어요! 💪
작성자: 마늘빵
📱 모바일용 빠른 학습 가이드
🚀 CHOOSECOLS 함수 대체 방법 요약
❓ 문제상황
- 특정 열만 선택해서 데이터 추출 필요
- CHOOSECOLS 함수 사용 불가 엑셀 버전
✅ 해결방법
INDEX + ROW 조합 (추천)
=INDEX(범위, ROW(범위)-ROW(첫셀)+1, {열번호})
- 가장 안정적이고 실용적
🔥 핵심 포인트
- 반환열과 행 크기 선택후 배열 수식으로 입력 (Ctrl+Shift+Enter)
- 열 번호는 1부터 시작
- 큰 범위 지정 시 성능 저하 주의
⚡ 바로 써먹기
직원명, 급여만 추출:
=INDEX(A2:F13, ROW(A2:F13)-ROW(A2)+1, {1,3})
이 방법을 익혀두면 구버전 엑셀에서도 최신 기능을 완벽하게 구현할 수 있어요! 📈