|
B |
C |
D |
E |
F |
G |
2 |
날짜 |
탈피유무 |
탈피주기 |
수분공급 |
특이사항 |
|
3 |
2007-06-10 |
탈피 |
0 |
|
|
1 |
4 |
2007-06-13 |
|
|
|
|
1 |
5 |
2007-06-18 |
탈피 |
8 |
|
|
2 |
6 |
2007-07-01 |
|
|
|
|
2 |
7 |
2007-07-11 |
|
|
|
|
2 |
8 |
2007-07-20 |
탈피 |
32 |
|
|
3 |
G3 =G2+N(C3="탈피") ; 카운터 열 (보조열. 탈피가 적히는대로 1씩 증가)
D3 =IF(C3="탈피",IF(G3=1,0,B3-INDIRECT("B"&SUMPRODUCT(N(G$3:INDIRECT("G"&ROW())=G3-1),N(C$3:INDIRECT("C"&ROW())="탈피"),ROW(G$3:INDIRECT("G"&ROW()))))),"")
; G3 잡아 아래로 (작업 행 만큼) 복사, D3잡아 아래로 복사하면 작업 끝.
수식 설명 : G열에 카운터 수행. D열에 "탈피"가 적히면 처음 적힌 경우는 탈피주기를 0으로 표시, 다음부터는 직전에 "탈피"라고 적힌 행을 SUMPRODUCT로 찾아 날짜 빼기 날짜로써 탈피주기를 구함.
덧붙임 : 예시는 제가 아는 한 엑셀함수 예제의 난제에 속합니다. 바로 직전 조건을 만족하는 행을 구하는 함수가 없거든요. 배열수식이 유동참조를 지원하면 비교적 간단하지만 그렇지 않고, 보조셀을 위 G열과 같이 두더라도 MATCH함수가 유동참조를 지원하지 않습니다. 그래서 유동참조(행이 변하더라도 범위를 그 행에 맞춰 연산하도록)를 지원하는 VLOOKUP, SUM, COUNTIF, SUMPRODUCT 따위를 활용해야 하지요. 이 예제를 푸는 과정에서 SUMPRODUCT의 유동참조가 가능한 것을 확인한 것은 제게 소득입니다.
'논리 > 엑셀 프로그래밍' 카테고리의 다른 글
시급 계산기 (0) | 2008.11.13 |
---|---|
단가 조합 구하기 (0) | 2008.11.13 |
다중조건 맞춤 출력 (0) | 2008.11.13 |
근사값을 임의의 갯수 만큼 추출 (0) | 2008.11.13 |
다른 화일의 체크한 행만 표시 (0) | 2008.11.13 |