논리/엑셀 프로그래밍

조건을 만족하는 데이타를 한 셀에 결합

섬그늘 2008. 11. 14. 12:38

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 잡아 아래로 데이타가 다 나올 때 까지 (에러가 뜰 때 까지) 드래그하면 표가 완성되며, 원본이 바뀌면 결과도 자동으로 바뀝니다. 되도록 배열수식을 쓰지 않으려고 노력한 결과인데(배열수식을 쓰면 보다 수식은 간단해지겠지만 속도가 무척 느려집니다.), 참고하여 응용해 보세요.