시험대비자료실에 있는 컴활1급 최신에 있는 14년 1회 엑셀 기출문제를 풀어봤는데요 계산작업 2번 [표1]의 투약일수 ,약제비총과 [표2]를 이용하여 [j3:j30 영역에 희귀약품부담금을 계산하여 표시하시오
부담금이 텍스트면 그대로 그렇지 않으면 약제비총액*부담으로 계산
이문제에서
저는 답을 =IFERROR(VLOOKUP(I3,$A$34:$D$37,MATCH(G3,$B$33:$D$33,1)+1,TRUE),I3*VLOOKUP(I3,$A$34:$D$37,MATCH(G3,$B$33:$D$33,1)+1,TRUE)) 이렇게 적었거든요 근데 ifrror가 오류 나는거같네요 왜 그런거죠? IFERROR 는 그렇지 않을값을 나중에 넣는거 아닌가요? 해설보니 앞에쪽에 약제비총액 *
VLOOKUP으로 시작되던데 제가 이태까지 할때는 IFERROR의 오류값은 마지막에 입력해줬는데 이건 앞에 나와서 혼란스럽네요. 문제 이해를 잘못한건가요? 텍스트면 오류값이라고 봐야하는건가요?
그리고 계산작업 3번문제에서 =SUM(IF((MID(A3:A30,4,2)=F34)*(B3:B30=G33),I3:I30)) 제가 푼 답 이고요
=SUM(IF((MID(A3:A30,4,2)*1=F34)*(B3:B30=G33),I3:I30)) 이게 정답입니다
왜 *1이 들어가는건가요? MID RIGHT LEFT 슬때 *1이나 " " 로 싸준다고 책에서 본거같은데 "F34" 이렇게 싸줘도 답이 나오질 않네요 이것도 이유좀 알려주세요
단일조건)
=sum(if(조건,1)): 조건 개수
=sum(if(조건,참값))
=sum((조건)*1): 조건 개수
=sum((조건1)*(조건2)*구할범위 : 다수 조건 합계
=sum((조건1)*(조건2)*1) : 다수 조건 개수
=sum(if((조건1)*(조건2)*구할범위 : 다수 조건 합계
=sum(if((조건1)*(조건2)*1 : 다수 조건 개수
IFERROR(I3*VLOOKUP(I3,$A$34:$D$37,MATCH(G3,$B$33:$D$33,0)+1), VLOOKUP(I3,$A$34:$D$37,MATCH(G3,$B$33:$D$33,0)+1))
식이나 식 자체의 값이 오류가 나면 오류값을 표시합니다.
I3*VLOOKUP(I3,$A$34:$D$37,MATCH(G3,$B$33:$D$33,0)+1)
은 식이 오류가 아니면 이 식을 그대로 계산하여 표시하고
이 값이 오류가 나면
VLOOKUP(I3,$A$34:$D$37,MATCH(G3,$B$33:$D$33,0)+1
의 값을 반환하는 것이죠.
IFERROR(I3*VLOOKUP(I3,$A$34:$D$37,MATCH(G3,$B$33:$D$33,0)+1), VLOOKUP(I3,$A$34:$D$37,MATCH(G3,$B$33:$D$33,0)+1))
중
VLOOKUP(I3,$A$34:$D$37,MATCH(G3,$B$33:$D$33,0)+1
에서 vlookup 의 범위 a34:d37 과 macth의 범위 b33:d33 이 다르기 때문입니다.
열이 틀려서 인 것이죠.
vlookup의 범위는 a열부터 4열 이고 match의 범위는 b열 부터 3열 이므로
match에서 나온 결과를 vlookup의 열로 찾게 되면 한줄씩 당겨져서 표시가 됩니다.
그러므로 vlookup의 결과와 같게 표시하기 위해서 +1 을 하는 것입니다.
sum((조건1)*(조건2)*값을구할범위)
sum(if((조건1)*(조건2),값을구할범위)
로 조건들은 * 나 + 로 and or 을 적용하셔야 하고
if 가 있는지 없는지에 따라 값을 구할범위를 * 로 연결할지 , 로 사용할지를 판단하시면 됩니다.
if(조건,참,거짓) 이므로 조건이 모두 참이면 값을구할범위에서 값을 반환하고 합계를 구하게 되는 것입니다.
days360 함수는 1년을 360일 즉 한달을 30일로 치게 됩니다. 그리고 두 수 사이의 날짜를 구하죠
진료일자와 조제일자 사이의 날짜수를 구하여 1 이하로 차이가 나면 됩니다.
days360(2014-9-11,2014-9-10)
이면 1이 나옵니다. 1보다 작거나 같은 값이 되죠? 문제에서 원한 조제일자가 같거나 조제일자가 1일많은 행을 찾을 수 있는 것입니다.
좋은 하루 되세요.
-
*2015-01-23 07:38:47"
IFERROR(I3*VLOOKUP(I3,$A$34:$D$37,MATCH(G3,$B$33:$D$33,0)+1), VLOOKUP(I3,$A$34:$D$37,MATCH(G3,$B$33:$D$33,0)+1))
식이나 식 자체의 값이 오류가 나면 오류값을 표시합니다.
I3*VLOOKUP(I3,$A$34:$D$37,MATCH(G3,$B$33:$D$33,0)+1)
은 식이 오류가 아니면 이 식을 그대로 계산하여 표시하고
이 값이 오류가 나면
VLOOKUP(I3,$A$34:$D$37,MATCH(G3,$B$33:$D$33,0)+1
의 값을 반환하는 것이죠.
IFERROR(I3*VLOOKUP(I3,$A$34:$D$37,MATCH(G3,$B$33:$D$33,0)+1), VLOOKUP(I3,$A$34:$D$37,MATCH(G3,$B$33:$D$33,0)+1))
중
VLOOKUP(I3,$A$34:$D$37,MATCH(G3,$B$33:$D$33,0)+1
에서 vlookup 의 범위 a34:d37 과 macth의 범위 b33:d33 이 다르기 때문입니다.
열이 틀려서 인 것이죠.
vlookup의 범위는 a열부터 4열 이고 match의 범위는 b열 부터 3열 이므로
match에서 나온 결과를 vlookup의 열로 찾게 되면 한줄씩 당겨져서 표시가 됩니다.
그러므로 vlookup의 결과와 같게 표시하기 위해서 +1 을 하는 것입니다.
sum((조건1)*(조건2)*값을구할범위)
sum(if((조건1)*(조건2),값을구할범위)
로 조건들은 * 나 + 로 and or 을 적용하셔야 하고
if 가 있는지 없는지에 따라 값을 구할범위를 * 로 연결할지 , 로 사용할지를 판단하시면 됩니다.
if(조건,참,거짓) 이므로 조건이 모두 참이면 값을구할범위에서 값을 반환하고 합계를 구하게 되는 것입니다.
days360 함수는 1년을 360일 즉 한달을 30일로 치게 됩니다. 그리고 두 수 사이의 날짜를 구하죠
진료일자와 조제일자 사이의 날짜수를 구하여 1 이하로 차이가 나면 됩니다.
days360(2014-9-11,2014-9-10)
이면 1이 나옵니다. 1보다 작거나 같은 값이 되죠? 문제에서 원한 조제일자가 같거나 조제일자가 1일많은 행을 찾을 수 있는 것입니다.
좋은 하루 되세요.