비어 있는 셀의 값은?

비어 있는 셀은 엑셀에서 주의해야 할 사항입니다. Month함수를 사용하면 1로 표시되기 때문입니다. 왜냐하면 1900-01-00이기 때문에 일이 0, 월은 1이 됩니다. 따라서, 집계할 때도 Month를 계산할 때 공백을 제외하도록 추가적인 조건을 주거나 날짜를 지정해야 합니다.

1. 문제

K45셀의 수식

=SUMPRODUCT(($B45=MONTH(H$3:H$40)&”월”)*(K$3:K$40))은

H열에서 1월을 찾아 K열 값을 더하는 수식인데 1월이 없는데도 11,787,000이란 값이 나옵니다.

2. 원인 찾기

M9셀에 =month(h9)라고 입력하니 100.0%, 다시 말해 1이라고 표시됩니다.

표시형식이 백분율이라 1이 100.0%로 표시되는 것입니다.

이 셀의 표시 형식을 간단한 날짜로 바꾸면

1900-01-01로 표시됩니다.

이번에는 month를 사용하지 않고 =h9라고 하면 1900-01-00으로 일이 이상하게 0이지만 월은 1로 표시됩니다.

다시 말해 빈 칸이 0이고, 1900-01-00일이기 때문에 숫자 1이나 0이나 모두 1월이 되는 것입니다.

3. 해법 1 – SumProduct

그렇다면 H3셀에서 H40셀의 값이 빈 셀이 아니거나, 값이 0보다 커야 한다는 조건을 걸어야 합니다.

=SUMPRODUCT((H$3:H$40<>””)($B45=MONTH(H$3:H$40)&”월”)(K$3:K$40))

이라고 빈 셀이 아니라는 조건을 줄 수도 있고,

=SUMPRODUCT((H$3:H$40>0)($B45=MONTH(H$3:H$40)&”월”)(K$3:K$40))

이라고 0보다 커야 한다는 조건을 줄 수도 있습니다.

3. 해법 2 – SumIfs 실패 1

=SUMifs(K$3:K$40,H$3:H$40,”>0″,MONTH(H$3:H$40)&”월”,$B45)

라고,

SumIfs 함수 구문인

SUMIFS(sum_range, criteria_range1, criteria1, [criteria_range2, criteria2], …)에 맞게 수식을 작성해도 month란 함수가 SumIfs 함수 안에 있어서 오류가 발생합니다.

4. 해법 3 – SumIfs 성공

따라서, month를 사용하지 않고, 1월 1일보다 크고, 1/31보다 작다라고 수식을 수정하면 됩니다.

따라서, 수식은 아래와 같습니다.

=SUMIFS(K$3:K$40,H$3:H$40,”>=”&DATE(2025,LEFT($B45,LEN($B45)-1),1),H$3:H$40,”<=”&EOMONTH(DATE(2025,LEFT($B45,LEN($B45)-1),1),0))

2025/1/1은 B45셀을 이용하면 DATE(2025,LEFT($B45,LEN($B45)-1),1)로서

연도는 2025라고 직접 입력했고,

월은 B45셀이 ‘1월’로 문자로 되어 있으므로 월을 제외한 문자를 가져와야 하므로 left($b45,len($b45)-1)라고 왼쪽부터 문자를 가져오는데, 길이에서 1을 뺀 길이만큰 가져오도록 했고,

일도 1이라고 직접 입력했습니다.

그리고 월의 말일은 EOMonth 함수를 이용해 1/1의 0번째 월의 말일을 구하면 되며, 수식은

EOMONTH(DATE(2025,LEFT($B45,LEN($B45)-1),1),0)

입니다.

DATE(2025,LEFT($B45,LEN($B45)-1),1)와 EOMONTH(DATE(2025,LEFT($B45,LEN($B45)-1),1),0)의 값은

M12, M13에는 숫자로 표시하고, N12, N13셀에는 날짜 형식으로 표시했습니다.

그리고, 크거나 같고, 작거나 같아야 하므로

“>=”&와 “<=”&로 날짜를 연결해야 합니다.

K45셀의 수식을 복사한 후 K46셀과 K47셀에 테두리에 영향이 없도록 수식으로 붙여넣으면 값이 모두 잘 구해집니다.

3월이 화면을 보면 6,412,500인데, 7,412,500으로보이는 것은

중간의 행을 숨겨서 그렇습니다.

3행부터 40행까지 선택한 후 숨기기 취소를 하면

숨어있던 15행이 표시돼서 3월 900,000이 더해지므로 7,412,500 맞습니다.

5. 해법 4 – 날짜를 이용한 SumProduct 수식

month를 사용하는 경우에 비해 복잡하지만 날짜를 기준으로 수식을 작성할 수도 있습니다.

=SUMPRODUCT((K$3:K$40)(H$3:H$40>=DATE(2025,LEFT($B47,LEN($B47)-1),1))(H$3:H$40<=EOMONTH(DATE(2025,LEFT($B47,LEN($B47)-1),1),0)))

M39셀에 수식을 입력했습니다.

소계를 제외하고 합계 구하기 – Lookup 함수

1. 문제

합계를 범위내에서 홀수인 행과 짝수인 행으로 나눠서 구하고 있는데, 중간에 소계가 있어서 여기에 숫자를 입력하게 되면 합계가 틀려지는 문제가 있으므로 소계인 경우에는 합계에서 제외하도록 해야 합니다.

(짝수인 행 합계 수식) =SUMPRODUCT((MOD(ROW(H$4:H$23),2)=0)*H$4:H$23)

급여대장 소계가 더해지는 문제점 있음

2. 해결방법

가. Lookup 함수

그런데 문제는 셀인 병합되어 있어서 소계가 윗 셀에만 있고 아랫 셀은 비어 있다는 것입니다. 이럴 때 생각나는 것이 Lookup함수입니다.

Lookup 함수는 벡터형과 배열형이 있는데, 이 경우에 사용하는 것은 벡터형이며,

구문은 LOOKUP(lookup_value, lookup_vector, [result_vector])입니다.

찾을 값을 찾을 벡터에서 찾은 후 결과 벡터를 반환하는 것입니다.

예제) =lookup(4.19,A2:A6,B2:B6)

4.19를 A2셀에서 A6셀까지에서 찾아서, 일치하는 셀인 A3셀과 같은 위치의 B3셀 값이 주황색을 반환하는 것입니다. 이건 너무 단순한 경우입니다.

Lookup 함수 예시

나. 셀이 비어 있는 경우 윗 셀값으로 채우기

N4셀에 =LOOKUP(ROW(C4:C23),ROW(C4:C23)/(C4:C23<>””),C4:C23)라고 입력하면 아래와 같이 C4:C23<>””로 빈 셀인지 체크해서 빈 셀이라면 윗셀 값으로 채웁니다. N5셀의 경우도 1, N13셀의 경우는 “소계”로 채웠습니다.

Lookup 함수를 이용해 빈 셀에 값 채워넣기

위 화면을 보면 Microsoft 365를 사용해서 결과값 영역에 파란 선이 둘러쳐져 있는데, 낮은 버전이라면 먼저 결과가 표시될 영역인 H4셀부터 H23셀까지를 선택한 다음 위 수식을 입력하고, Ctrl+Shift+Enter키를 눌러야 할 것입니다. 그러면 위 수식은 왼쪽과 오른쪽에 중괄호가 없는데, 낮은 버전의 경우는 중괄호가 표시될 것입니다.

다. SumProduct 함수를 이용한 수식 변경하기

(H24셀 수식 수정하기)

이제 H24셀의 수식에 위 Lookup함수를 이용한 수식을 추가하겠습니다.

(MOD(ROW(H$4:H$23),2)=0)라는 행이 짝수인 경우에 소계가 아닌 경우를 추가하면 됩니다.

따라서 조건은 (MOD(ROW(H$4:H$23),2)=0)*(LOOKUP(ROW($C$4:$C$23),ROW($C$4:$C$23)/($C$4:$C$23<>””),$C$4:$C$23)<>”소계”)가 됩니다.

기존 Lookup 수식에서 C4:C24 범위에 F4키를 눌러 절대 참조형식으로 수정했고, Lookup 수식 뒤에 <>”소계”를 추가해서 ‘소계’가 아닌 경우만 더하도록 했습니다.

전체 수식은

=SUMPRODUCT((MOD(ROW(H$4:H$23),2)=0)(LOOKUP(ROW($C$4:$C$23),ROW($C$4:$C$23)/($C$4:$C$23<>””),$C$4:$C$23)<>”소계”)H$4:H$23)

입니다.

소계를 제외하고 합계 구하기

이제 짝수행인 소계 H12셀에 숫자를 넣어도 합계가 달라지지 않는 것을 알 수 있습니다.

중간에 소계를 넣어서 합계가 변하지 않는지 체크하기

그러나 총합계는 조건이 없기때문에 달라집니다.

(H25셀 수식 수정하기)

H25셀의 수식에도 Lookup 수식을 이용한 조건인

*(LOOKUP(ROW($C$4:$C$23),ROW($C$4:$C$23)/($C$4:$C$23<>””),$C$4:$C$23)<>”소계”)

를 추가해서 수정하면

*(LOOKUP(ROW($C$4:$C$23),ROW($C$4:$C$23)/($C$4:$C$23<>””),$C$4:$C$23)<>”소계”)

=SUMPRODUCT((MOD(ROW(H$4:H$23),2)=1)(LOOKUP(ROW($C$4:$C$23),ROW($C$4:$C$23)/($C$4:$C$23<>””),$C$4:$C$23)<>”소계”)H$4:H$23)

가 됩니다.

(L열까지 수식 복사해서 붙여 넣기)

이제 H24셀과 H25셀의 수식을 복사해서 L26셀까지 붙여넣거나, H24셀과 H25셀을 선택한 다음 H25셀의 채우기 핸들을 L26셀까지 끌어도 됩니다.

합계 수식 수정한 후 복사하기

라. 총합계셀 수정하기

(H27셀 수식 수정하기)

Sum을 SumProduct로 수정하고,

마찬가지로 “소계”가 아닌 조건식

(LOOKUP(ROW($C$4:$C$23),ROW($C$4:$C$23)/($C$4:$C$23<>””),$C$4:$C$23)<>”소계”)

을 추가하면 됩니다.

완성된 수식은

=SUMPRODUCT((LOOKUP(ROW($C$4:$C$23),ROW($C$4:$C$23)/($C$4:$C$23<>””),$C$4:$C$23)<>”소계”)*H4:H23)

입니다.

총합계 수식에도 "소계"제외하는 조건 추가하기

H27셀의 채우기 핸들을 L27셀까지 끌어서 수식을 복사합니다.

마. 완성된 파일