http://kin.naver.com/detail/detail.php?d1id=1&dir_id=1050202&eid=AyxylvkjZ2Aqwu/V5ZbpKNzWYltiZA9n
|
B |
C |
D |
E |
F |
2 |
구분 |
성명 |
|||
3 | 1무거적 | 박지영 | 1 | 1 | 박지영 |
4 | 1무거적 | 박성자 | 1 | 2 | 박지영 박성자 |
5 | 1무거적 | 김미애 | 1 | 3 | 박지영 박성자 김미애 |
6 | 1유실적이상 | 허윤정 | 2 | 1 | 허윤정 |
7 | 1유실적이상 | 채혜영 | 2 | 2 | 허윤정 채혜영 |
8 | 1유실적이상 | 정명숙 | 2 | 3 | 허윤정 채혜영 정명숙 |
9 | 25만이상 | 윤진아 | 3 | 1 | 윤진아 |
10 | 35만이상 | 임정임 | 4 | 1 | 임정임 |
11 | 35만이상 | 박재순 | 4 | 2 | 임정임 박재순 |
12 | 55만이상 | 김석준 | 5 | 1 | 김석준 |
13 | 55만이상 | 이윤희 | 5 | 2 | 김석준 이윤희 |
14 | |||||
15 | 1무거적 | 박지영 박성자 김미애 | |||
16 | 1유실적이상 | 허윤정 채혜영 정명숙 | |||
17 | 25만이상 | 윤진아 | |||
18 | 35만이상 | 임정임 박재순 | |||
19 | 55만이상 | 김석준 이윤희 | |||
20 | #N/A | #REF! |
D3 =IF(COUNTIF(B$2:B2,B3)=0,1,0)+D2 ; 구분항목이 처음 등장하면 카운터 증가
E3 =COUNTIF(D$3:D3,D3) ; 구분항목이 이제껏 등장한 회수
F3 =IF(E3=1,"",OFFSET(F$2,SUMPRODUCT((D$3:D$13=D3)*(E$3:E$13=E3-1)*ROW(E$3:E$13))-ROW(F$2),0)&" ")&C3 ; 카운터가 1이면 C열 그대로, 2이상이면 바로 직전 데이타 + 빈칸 + 지금 데이타
B15 =INDEX(B$3:B$13,MATCH(ROW(A1),D$3:D$13,0)) ; 일련번호 발생, 구분항목 가져오기
F15 =OFFSET(F$2,SUMPRODUCT((D$3:D$13=ROW(A1))*(E$3:E$13=COUNTIF(B$3:B$13,B15))*ROW(E$3:E$13))-ROW(C$2),0) ; 구분항목 별 최종 데이타
이후 D3:F3 잡아 아래로 복사 (채우기 핸들 +를 더블클릭하면 될 겁니다), B15:F15 잡아 아래로 데이타가 다 나올 때 까지 (에러가 뜰 때 까지) 드래그하면 표가 완성되며, 원본이 바뀌면 결과도 자동으로 바뀝니다. 되도록 배열수식을 쓰지 않으려고 노력한 결과인데(배열수식을 쓰면 보다 수식은 간단해지겠지만 속도가 무척 느려집니다.), 참고하여 응용해 보세요.
'논리 > 엑셀 프로그래밍' 카테고리의 다른 글
시그마 구현 (a, b 유동참조) (0) | 2008.11.14 |
---|---|
3 조건 이상의 마지막 행 잡아 내기 (0) | 2008.11.14 |
특수문자 없애기 (0) | 2008.11.14 |
주소 정렬 (번지수는 숫자로 ; 2-1이 11 보다 앞에 오게) (0) | 2008.11.14 |
일일 근무편성, 랜덤/공평 (0) | 2008.11.14 |