@피망 님
F5 =(SUMIFS(E$5:E$28,$D$5:$D$28,"<"&$D5) + SUMIFS(E$5:E5,$D$5:$D5,$D5))/E$4 대충 이렇게 냈는데, (전월까지의 누계+행기준당월누적행금액)를 총액으로 나눈 값입니다. 즉, 같은 월이라면 전월까지 누계 + 입력된 순서대로 누계가 됩니다.
@박정호2 님
sumproduct 함수는 배열끼리 곱해서 더하는 함수로 알고 있는데요 함수에 -- 이거는 어떤 원리로 작동하는걸까요 ㅠㅠ 어렵네요
2025.08.18
좋아요
박정호2Lv.30
@피망 님
($D$5:$D$1005<=$D5) 이 식은 조건 식입니다. 실제로 작동 시켜 보면 TRUE 혹은 FALSE 를 반납합니다. 하지만 숫자가 필요하기 때문에 임의의 셀에 =TRUE*1 을 하면 1 이 반납되고 =FALSE*1 의 경우 0 이 반납되는게 보일 겁니다. *1 을 해주기 귀찮을 경우 --(TRUE) -1*-1*(TRUE) 하는 것이랍니다. 그리고 sumifs 함수랑 동치입니다. 제가 닥치고 sumproduct 로 하는 버릇이 있어서 F5=sumifs(E$5:E$1005,$D$5:$D$1005,"<="&$D5)/E$4 이것과 정확히 같습니다. 동치일 경우 sumifs 가 안정성이 훨씬 높습니다. 저는 일단 sumproduct를 써 놓고 생각은 그 다음 하는 버릇이 있어서 입니다. 윗분들 말씀 처럼 sumifs가 맞습니다.
2025.08.18
1
dLv.30
-- 트릭은...
엑셀은 계산할 때, 내부적으로 형변환을 자동으로 해줍니다. 텍스트 "1234"에 숫자에 더하기, 곱하기 등의 연산을 해주면 알아서 숫자로 바꿔서 계산합니다. TRUE나 FALSE 같은 논리값은 1과 0으로 바꿔서 처리해줍니다. (논리값 1/0 갈음처리가 vlookup 마지막 옵션에 FALSE 대신 편하게 0을 넣는 이유...)
- 는 단항 마이너스 연산자인데(말 그대로 숫자 앞에 붙는 그 마이너스...) 연산 과정에서 논리값이 강제로 숫자인 -1 또는 0으로 바뀝니다. 그 상태에서 -를 일부러 한 번 더 해줘서 결국 1 또는 0으로 바꾸는 겁니다. 180도를 두번 돌려서 360도 제자리로 오는 느낌이에요.
결국 논리값을 숫자로 만드는 간단한 트릭인데, *1 이나 /1 등을 해도 결과는 같지만, --가 가독성이 좋아 많이 사용 되고 있습니다.
"시기(일정)"은 날짜로 입력한 것인가요, 아니면 텍스트인가요?
간단하게는 SUMIFs 함수로 해결 될 것 같은데...
대충 이렇게 냈는데, (전월까지의 누계+행기준당월누적행금액)를 총액으로 나눈 값입니다.
즉, 같은 월이라면 전월까지 누계 + 입력된 순서대로 누계가 됩니다.
E열 값으로만
=SCAN(0,E5:E28,SUM) / E4
H5=SUMPRODUCT(--($D$5:$D$1005<=$D5),G$5:G$1005)/G$4
실제로 작동 시켜 보면 TRUE 혹은 FALSE 를 반납합니다.
하지만 숫자가 필요하기 때문에
임의의 셀에
=TRUE*1 을 하면 1 이 반납되고
=FALSE*1 의 경우 0 이 반납되는게 보일 겁니다.
*1 을 해주기 귀찮을 경우 --(TRUE)
-1*-1*(TRUE) 하는 것이랍니다.
그리고 sumifs 함수랑 동치입니다.
제가 닥치고 sumproduct 로 하는 버릇이 있어서
F5=sumifs(E$5:E$1005,$D$5:$D$1005,"<="&$D5)/E$4
이것과 정확히 같습니다.
동치일 경우 sumifs 가 안정성이 훨씬 높습니다.
저는 일단 sumproduct를 써 놓고
생각은 그 다음 하는 버릇이 있어서 입니다.
윗분들 말씀 처럼 sumifs가 맞습니다.
엑셀은 계산할 때, 내부적으로 형변환을 자동으로 해줍니다.
텍스트 "1234"에 숫자에 더하기, 곱하기 등의 연산을 해주면 알아서 숫자로 바꿔서 계산합니다.
TRUE나 FALSE 같은 논리값은 1과 0으로 바꿔서 처리해줍니다.
(논리값 1/0 갈음처리가 vlookup 마지막 옵션에 FALSE 대신 편하게 0을 넣는 이유...)
- 는 단항 마이너스 연산자인데(말 그대로 숫자 앞에 붙는 그 마이너스...)
연산 과정에서 논리값이 강제로 숫자인 -1 또는 0으로 바뀝니다.
그 상태에서 -를 일부러 한 번 더 해줘서 결국 1 또는 0으로 바꾸는 겁니다.
180도를 두번 돌려서 360도 제자리로 오는 느낌이에요.
결국 논리값을 숫자로 만드는 간단한 트릭인데, *1 이나 /1 등을 해도 결과는 같지만,
--가 가독성이 좋아 많이 사용 되고 있습니다.