CHOOSE 함수 실습: 번호·소수·텍스트 입력을 구분하기

CHOOSE 함수는 번호가 가리키는 위치의 값을 고릅니다. 목록을 짧게 적는 것보다 중요한 것은 어떤 입력을 허용하는지 정하는 일입니다. 이 글에서는 가상 등급 네 행으로 비율과 금액을 계산하고, 숫자 3과 텍스트 3, 소수와 빈칸을 따로 검사합니다.

실습의 급여·보너스율은 계산용 가상 값입니다. 실제 사람의 급여나 회사에서 승인한 지급 정책이 아니며, 보너스나 세금에 관한 판단 자료로 사용하지 않습니다. 목표는 같은 입력과 수식을 놓고 같은 셀 결과를 재현하는 것입니다.

CHOOSE에서 가상 등급 1·2·3·4·5가 각각 0%·5%·10%·15%·20%를 고르며 숫자 3은 세 번째 값 10%를 선택하는 도해. E01 금액 기대값은 3,500,000×10%=350,000입니다.
설명용 도해: B2의 번호로 목록 위치를 선택해 D2의 비율을 구합니다. 가상 등급 3의 기대값은 0.1(10%)이며 E01 금액 기대값은 350,000입니다. 등급 1의 정상 0%와 입력 오류는 구분합니다. 가상 데이터·설명용 도해이며 실제 Excel 실행 화면이 아닙니다.

준비물: 첨부의 네 시트

XLSX에는 등급, 오류입력, 선택, README 시트가 들어 있습니다. CHOOSE와 IF·ISNUMBER를 사용하는 단일 셀 수식 실습이며 외부 연결·매크로·자동 지급 기능은 없습니다.

다운로드 원본을 보존하고 사본에서 실습합니다. 등급 시트의 A:C가 가상 입력, D:E가 수식 결과, F:G가 기본 입력의 고정 기대값, H가 비교입니다. 기존 회사 자료를 붙여 넣기 전에 아래 네 행을 먼저 맞춥니다.

행 A 가상 ID B 등급 C 가상 기본급 D 기대 비율 E 기대 금액
2 E01 3 3500000 0.1 350000
3 E02 1 4200000 0 0
4 E03 5 2800000 0.2 560000
5 E04 2 3800000 0.05 190000

이 가상 입력에서 기본급 합계는 14300000, 보너스금액 합계는 1100000입니다. 비율 셀은 퍼센트로 표시하지만 실제 저장값은 표의 소수입니다. 표시 형식을 바꾸는 일과 값 자체를 바꾸는 일을 구분하세요.

CHOOSE 목록은 정확히 다섯 값

CHOOSE는 index_num으로 지정한 위치의 값을 반환하며, 번호가 제공한 값 목록을 벗어나면 #VALUE!를 반환합니다. Microsoft CHOOSE 문서의 동작을 이 가상 등급표에 적용합니다.

=CHOOSE(B2,0,0.05,0.1,0.15,0.2)

등급 1의 값은 첫 번째 0이고, 등급 3의 값은 세 번째 0.1입니다. 가상 등급 범위가 1부터 5라면 반환값도 다섯 개입니다. 여섯 번째 값을 덧붙여 등급 6까지 조용히 허용하지 않습니다.

CHOOSE는 소수 index_num의 소수 부분을 잘라 위치를 선택합니다. 따라서 단독으로 =CHOOSE(2.5,0,0.05,0.1,0.15,0.2)를 실행하면 두 번째 값 0.05가 선택됩니다. 이것은 함수 동작이지, 소수 등급을 허용해도 된다는 업무 규칙이 아닙니다.

숫자 여부를 먼저 검사하는 방어 수식

이 실습에서는 등급을 실제 숫자인 정수 1부터 5까지로 제한합니다. 등급!D2에 들어 있는 수식입니다.

=IF(B2="","입력 오류",IF(NOT(ISNUMBER(B2)),"입력 오류",IF(OR(B2<1,B2>5,MOD(B2,1)<>0),"입력 오류",CHOOSE(B2,0,0.05,0.1,0.15,0.2))))

빈칸을 먼저 걸러내고, 숫자가 아니면 MOD에 전달하지 않습니다. 숫자인 경우에만 범위와 정수 여부를 확인합니다. OR(NOT(ISNUMBER(B2)),MOD(B2,1)<>0)처럼 문자 입력에도 MOD가 평가될 수 있는 구조로 합치지 않는 이유입니다.

등급!E2에서는 비율이 정상 숫자일 때만 기본급을 확인하고 곱합니다.

=IF(NOT(ISNUMBER(D2)),"확인 필요",IF(NOT(ISNUMBER(C2)),"기본급 확인",IF(C2<0,"기본급 확인",C2*D2)))

등급 오류를 0으로 바꾸면 정상적으로 보너스가 없는 등급 1과 구분하기 어렵습니다. 그래서 입력 오류와 정상 0을 서로 다른 상태로 남깁니다. 기본급에 문자열이나 음수가 들어간 경우도 금액 0으로 숨기지 않습니다.

빈칸 검사, 숫자 검사, 정수 1~5 범위 검사 후 CHOOSE에 전달하는 과정과 원시 CHOOSE의 2.5→0.05 동작을 방어 수식의 입력 오류와 구분한 도해
설명용 도해: 빈칸과 텍스트를 먼저 거르고 실제 숫자인 정수 1~5만 허용합니다. 원시 CHOOSE는 2.5의 소수 부분을 잘라 두 번째 값 0.05를 고르지만 이 실습의 방어 규칙은 입력 오류로 남깁니다. 가상 데이터의 기대값을 설명하며 실제 앱 실행 검증은 아닙니다.

실행과 기본 합격 기준

  1. 등급!B2:C5를 가상 입력 표와 대조합니다.

  2. D2의 방어 수식과 E2의 금액 수식을 확인하고 5행까지의 참조가 각 행을 가리키는지 봅니다.

  3. D2:D5가 0.1, 0, 0.2, 0.05, E2:E5가 350000, 0, 560000, 190000인지 확인합니다.

  4. H2:H5가 모두 일치인지 봅니다.

  5. 요약 영역 B9:B14를 기본급 합계·금액 합계·유효 비율 수·입력 오류 수·유효 금액 수·전달 상태 순으로 확인합니다.

요약 셀 가상 기본 입력의 기대값
B9 14300000
B10 1100000
B11 4
B12 0
B13 4
B14 계산 가능

SUM은 텍스트 상태를 합계에서 제외할 수 있습니다. 그래서 합계 셀만 보고 전체 계산이 끝났다고 판단하지 않습니다. D·E열 각각에 숫자 네 개가 있고, 행별 기대값도 일치해야 합니다. B14는 이 네 행의 숫자 개수 조건일 뿐 실제 지급 승인 표시가 아닙니다.

소수·텍스트·빈칸을 직접 비교하기

오류입력 시트에는 원시 CHOOSE 결과인 B열과 방어 수식 결과인 C열을 나란히 두었습니다. D열은 방어 수식의 기대값, E열은 비교입니다. 원시 B열의 일부 오류는 의도적으로 남긴 것입니다.

오류입력 행 A 입력 C 방어 결과
2 숫자 3 0.1
3 숫자 0 입력 오류
4 숫자 6 입력 오류
5 숫자 2.5 입력 오류
6 텍스트 3 입력 오류
7 텍스트 A 입력 오류
8 실제 빈 셀 입력 오류

A6은 숫자 3으로 보이더라도 텍스트입니다. 직접 만들 때는 작은따옴표를 앞에 붙여 '3을 입력할 수 있습니다. 방어 수식이 이를 임의로 숫자로 바꾸지 않도록 했습니다. 실제 운영에서 변환이 필요한 경우에는 원본을 남기고 별도 정리 단계에서 규칙을 정하세요.

사본에서 등급!B2를 2.5로 바꾸면 D2는 입력 오류, E2는 확인 필요, B14는 전달 보류가 되어야 합니다. 이어서 B2를 문자 A로 바꿔도 같은 상태여야 합니다. 확인 후 B2를 숫자 3으로 복구하고 금액 합계 1100000과 H열 일치를 다시 확인합니다.

분기 번호로 셀을 선택하는 작은 확장

선택 시트 C2:F2에는 가상 분기 값 120, 135, 128, 150이 있습니다. B2의 분기 번호는 2입니다. B4는 번호가 숫자 정수 1부터 4까지인지 확인한 뒤 CHOOSE로 이 네 셀 중 하나를 반환합니다. 기본 기대 결과는 135입니다.

선택!B2를 4로 바꾸면 B4는 150입니다. 0이나 텍스트를 넣으면 입력 오류가 나도록 했습니다. 기본 기대값인 B5는 135로 고정돼 있으므로 변경 중 B6에 확인이 나오는 것은 정상입니다. 복구할 때 B2를 숫자 2로 되돌립니다.

같은 시트 B9에는 =CHOOSE(2,"서울","부산","대구")를 넣었습니다. 결과는 부산입니다. CHOOSE는 계산식을 고르는 데만 쓰는 함수가 아니라 문자열이나 셀 값의 위치를 고르는 데도 쓰인다는 간단한 대조입니다.

E01~E04의 가상 등급·기본급·비율·금액 기대값, 기본급 합계 14,300,000과 금액 합계 1,100,000, 잘못된 등급의 전달 보류 및 숫자 3 복원 점검을 정리한 도해
설명용 도해: 네 행의 기대 금액은 350,000·0·560,000·190,000이고 합계는 1,100,000입니다. B2에 2.5나 문자 A를 넣으면 입력 오류·확인 필요·전달 보류 상태를 기대하고 숫자 3으로 복원합니다. 가상 데이터·설명용 도해이며 계산 가능 상태는 실제 지급 승인이 아닙니다.

오류와 복구: 결과를 덮지 말고 입력을 되돌리기

#VALUE! 오류가 원시 CHOOSE 열에 나타나면 먼저 번호와 목록 길이를 확인합니다. 0이나 6을 1로 강제 보정해 숨기지 말고, 입력 단계의 문제인지 허용 범위를 바꿔야 하는지 구분하세요.

방어 열에 예상 밖 오류가 나면 D2의 숫자 검사 순서와 수식을 원본에서 복구합니다. 문자가 들어간 셀을 MOD가 먼저 계산하도록 수식이 바뀌지 않았는지 봅니다. 원시 오류를 IFERROR 하나로 덮는 대신 입력 확인 상태를 유지합니다.

H열이나 요약 D열을 덮어썼다면 제공 원본의 비교 수식을 복원합니다. 등급 B2:B5는 3,1,5,2, 기본급 C2:C5는 3500000,4200000,2800000,3800000으로 되돌립니다. 가상 비율 목록도 0,0.05,0.1,0.15,0.2인지 확인한 뒤 행별 결과와 합계를 다시 봅니다.

기대값 열을 현재 결과에 맞춰 바꾸면 같은 실수를 비교 양쪽에 넣을 수 있습니다. 실제 규칙을 변경할 때는 승인된 기준과 변경 이유를 별도로 보관하고 새 입력·기대값을 함께 설계해야 합니다.

어디까지 재사용할 수 있나

이 예제는 네 행, 작은 고정 목록, 스칼라 값에 한정합니다. 행을 추가하면 수식과 합계 범위, 숫자 개수 기준도 함께 바꿔야 합니다. 기본 숫자 개수 4를 그대로 둔 채 확장했다고 판단하지 않습니다.

등급이 불연속 값이거나 목록이 자주 바뀐다면 별도 대응표로 관리하는 쪽이 읽기 쉽습니다. 중첩 IF의 '나머지는 모두 0'을 CHOOSE로 바꿀 때도 주의합니다. CHOOSE의 범위 밖 오류는 IF의 기본값과 동등한 동작이 아닙니다. 허용 입력 전체와 기본값을 대조한 뒤 전환해야 합니다.

데이터 유효성 검사나 시트 보호는 이 파일에 설정하지 않았습니다. 입력 제한이 필요한 운영 파일에서는 별도로 구성하되, 수식의 유형 검사까지 생략하지 않습니다. 여기의 비교 열 역시 수식 삭제나 모든 형태의 입력 오류를 감시하는 감사 시스템은 아닙니다.

이어서 읽기와 확인 범위

위치 선택이 아니라 조건을 순서대로 평가하려면 IF·IFS 고정 입력 검산으로 이어집니다. 오류와 실제 0을 구분하는 이유는 IFERROR·IFNA 오류 원인 실습에서 확인할 수 있습니다.

공식 문서 확인일: 2026-09-12. 첨부는 설계한 가상 입력과 기대값을 담으며 실제 Excel 실행이나 실제 지급 검증 증빙은 없습니다. 이미지 세 장은 설명용 일러스트입니다.

작성자 소개