1. CHOOSE
: index_num을 사용하여 인수 값 목록에서 값을 반환합니다.
2. CHOOSE(index_num,value1,value2,...)
: index_num 인수가 선택되는 값
: value1 index_num이 2일때 의 인수
: value2 index_num이 1일때 의 인수
-. index_num은 1과 29 사이의 숫자이거나, 1과 29 사이의 숫자가 들어 있는 셀에 대한 참조 또는 수식이어야 합니다.
-. index_num이 1이면 value1을, 2이면 value2 등의 방식으로 계속해서 반환됩니다.
-. index_num이 1보다 작거나 목록의 마지막 값의 수보다 크면 #VALUE! 오류 값이 반환됩니다.
-. index_num이 분수이면 소수점 이하를 잘라서 정수로 변환됩니다.
-. value1,value2,... CHOOSE 함수가 index_num에 따라 값이나 작업을 선택할 때 사용하는 인수입니다. 1개부터 29개까지 지정할 수 있습니다. 인수는 숫자, 셀 참조 영역, 정의된 이름, 수식, 매크로 함수, 텍스트 등이 될 수 있습니다.
※ index_num이 배열 이면 CHOOSE 함수가 계산될 때 모든 value가 계산됩니다.
※ CHOOSE 함수에서 value 인수는 단일 값일 수도 있고 참조 영역일 수도 있습니다.
3. 예제
3-1. 응용예제
"빨간테두리의 서식"
: '=CHOOSE(IF(ISNUMBER(VALUE(RIGHT(B18,3))),LENB(B18)-2,LENB(B18)),"A","B","C","D","E","F","G","H","J","K","L","M","N","P","Q","R","S","T","U","V","W","X","Y","Z")를 살펴보면 CHOOSE 함수 이외에도 IF ,ISNUMBER, VALUE, RIGHT, LENB 함수 등을 중첩해서 사용하므로 상당히 복잡해 보일 것입니다. 하지만 이것을 하나 씩만 놓고 보면 그렇게 어렵지 않다는 것을 알수 있을 것입니다.
1) LCN으로 단품인지 조립체 인지 먼저 구별합니다.
단품의 경우는 뒤의 세자리가 숫자로 구성됩니다. 그외 품목은 모두 조립체 입니다.
1번 조건을 보면 먼저 LCN의 뒤 3자리가 숫자인지 숫자인지를 구분해야 합니다.
LCN의 뒤 3자리를 가져오는 함수가 RIGHT(B18,3) 이고 VALUE 함수는 텍스트를 숫자로 변환 시키는 함수 입니다. 문자열에 속해있던 숫자를 참조할경우 형식은 여전히 텍스트로 되어 있기 때문에 이를 숫자형으로 바꾸기 위해 VALUE 함수가 필요한 것입니다. ISNUMBER 함수는 VALUE 함수 로 변환된 어떤값이 숫자인지 판별하는 함수입니다. 여기 까지 이해가 되셨으면 아래표의 함수 들을 자세히 한번 살펴 보세요.
함수하나씩을 풀어서 나열 하였습니다.
위의 표에서 VALUE 함수 항목을 보시면 #VALUE! 에러가 발생했는데 이는 VALUE 함수에 문자를 넣었기 때문입니다. 오류값 또한 숫자는 아니므로 상관은 없습니다. 여기까지 조건 1을 만족시키기 위해서 한 작업이었습니다. 다시 한번 설명 하면 LCN 뒤 3자리가 숫자이면 단품이므로 ISNUMBER 함수 항목에 TURE인 품목들이 단품이겠지요. 당연히 나머지들은 조립체 입니다.
다음은 2 , 3번째 조건을 한번 살펴 보겠습니다.
2.조립체의 경우에는 LCN의 문자열 길이로 LEVEL이 식별 가능합니다.
예를 들어 LCN 이 "A" 일 경우 문자열 길이가 1 이므로 "A" LEVEL 입니다. LCN 이 "A1A" 일 경우 문자열 길이가 3 이므로 "C" LEVEL 입니다. 단, LEVEL CODE 에 알파벳 "O" ,"I" 는 쓰지 않습니다.
3.단품의 경우에는 실제의 문자열 보다 2자리 적게 생각 하시면 됩니다. 예를 들어 LCN 이 "A1AA001" 일 경우 문자열 길이가 7자리로 LEVEL이 "G" 가 되어야 겠지만 실제 LEVEL은 문자열이 5자리의 경우와 같이 "E" 가 됩니다.
이미 조립체 와 단품은 구별 된 상태이므로 이제 남은 일은 조립체 일때의 LCN의 문자 길이와 단품일때의 문자길이만 구하면 되겠지요? 문자길이를 구하는 함수는 LENB함수 입니다. 참고로 LEN함수와 동일하나 LEN 함수는 문자열의 문자수를 구하지만 LENB 함수는 문자열의 바이트수를 구할수 있습니다.
조립체일경우 LCN 문자열에서의 문자길이를 그대로 사용 하면 됩니다. 이것을 수식으로 표현하면 =LENB("LCN 이 있는 셀주소") 가 되겠지요 단품일 경우 LCN 문자열의 길에어서 2자리 만큼 빼면 되구요. 이것 또한 수식으로 표현하면 =LENB("LCN이 있는 셀주소")-2 가 됩니다.
조건 2와 3을 다시 정리해보면 조립체 즉 ISNUMBER의 결과가 FALSE 일 경우 LENB("LCN 이 있는 셀주소") 이고 TRUE 일경우 LENB("LCN이 있는 셀주소")-2 가 되면 됩니다. 이것도 수식으로 표현하면
" IF(ISNUMBER 결과, LENB(LCN이있는 셀주소)-2,LENB(LCN이 있는 셀주소))"
가 됩니다. 여기까지 이해가 되셨으면 아래의 수식을 한번 살펴보세요.
이제 마지막으로 CHOOSE 함수를 사용하면 결과가 처음 표에 보셨던것 과 같은나올것입니다. 지금까지 사용한 함수를 한번에 중첩해서 쓰면 D18의 함수가 되겠지요? (D18 = 빨간네모박스)
이렇게 길게 설명한 이유는 여러 가지 조건에 함수가 여러 개 쓰여질 경우 하나씩 먼저 생각해 보면 쉽게 답이 나올수 있을것 같아서 장황하게 설명을 한번 해보았습니다. 설명이 너무 길어 오히려 이해가 더 안되면 어떻하나 하는 생각도 드네요..
이상입니다.
예제가 필요하신분은 댓글 달아주세요 :)
#미쓰스토리, #CHOOSE함수, #엑셀공부, #엑셀함수, #엑셀서식, #엑셀CHOOSE함수, #엑셀CHOOSE서식, #엑셀 choose, #weekday 함수, #엑셀INDEX, #엑셀 요일 함수, #엑셀 match 함수, #엑셀 index 함수, #choose, #미쓰스토리, #CHOOSE함수, #엑셀공부, #엑셀함수, #엑셀서식, #엑셀CHOOSE함수, #엑셀CHOOSE서식, #엑셀 choose, #weekday 함수, #엑셀INDEX, #엑셀 요일 함수, #엑셀 match 함수, #엑셀 index 함수, #choose, #미쓰스토리, #CHOOSE함수, #엑셀공부, #엑셀함수, #엑셀서식, #엑셀CHOOSE함수, #엑셀CHOOSE서식, #엑셀 choose, #weekday 함수, #엑셀INDEX, #엑셀 요일 함수, #엑셀 match 함수, #엑셀 index 함수, #choose, #미쓰스토리, #CHOOSE함수, #엑셀공부, #엑셀함수, #엑셀서식, #엑셀CHOOSE함수, #엑셀CHOOSE서식, #엑셀 choose, #weekday 함수, #엑셀INDEX, #엑셀 요일 함수, #엑셀 match 함수, #엑셀 index 함수, #choose, #미쓰스토리, #CHOOSE함수, #엑셀공부, #엑셀함수, #엑셀서식, #엑셀CHOOSE함수, #엑셀CHOOSE서식, #엑셀 choose, #weekday 함수, #엑셀INDEX, #엑셀 요일 함수, #엑셀 match 함수, #엑셀 index 함수, #choose, #미쓰스토리, #CHOOSE함수, #엑셀공부, #엑셀함수, #엑셀서식, #엑셀CHOOSE함수, #엑셀CHOOSE서식, #엑셀 choose, #weekday 함수, #엑셀INDEX, #엑셀 요일 함수, #엑셀 match 함수, #엑셀 index 함수, #choose,