논리/엑셀 프로그래밍

중복항목을 없애되 거기에 딸린 데이터는 살리기

섬그늘 2008. 11. 14. 11:40

http://kin.naver.com/detail/detail.php?d1id=1&dir_id=1050202&eid=QwnPEDZkmPon29T3D4kayuV9Eo3CZ4/8

 

함수만으로 처리하는 방식입니다. 함께 참고해 보세요.

 

 

B

C

D

E

F

G

H

I

J

K

L

M

N

O

2

aa

4

aa

갑, 정, 무, 신

1

aa

4

4

 

갑, 정, 무, 신

3

bb

 

bb

을, 기, 임

2

bb

3

3

 

을, 기, 임

 

4

cc

 

cc

3

cc

1

1

 

 

 

 

5

aa

 

dd

3

 

4

3

 

정, 무, 신

 

6

aa

 

#N/A

#N/A

3

 

4

2

 

무, 신

 

 

7

bb

 

 

 

3

 

3

2

 

기, 임

 

 

8

dd

 

 

 

4

dd

1

1

 

 

 

 

9

aa

 

 

 

4

 

4

1

 

 

 

 

10

bb

 

 

 

4

 

3

1

 

 

 

 

 

D2 =MAX(COUNTIF(B2:B10,B2:B10)) ; 수식 입력 후 CTRL+SHIFT+ENTER (배열수식)

G3 =IF(H3="",G2,G2+1) ; 빈행을 지우기 위한 처리, G2에 1 입력

H2 =IF(COUNTIF(B1:B$1,B2)=0,B2,"") ; 이제껏 나온 데이타면 빈칸

I2 =COUNTIF(B$2:B$10,B2) ; 전체 중 해당 데이타의 중복 수

J2 =COUNTIF(B2:B$10,B2) ; 앞으로 남은 중복 수

L2 =C2

M2 =CHOOSE(SIGN(COLUMN()-COLUMN($K$2)-$J2)+2,L2,L2&", "&OFFSET(L2,MATCH($B2,$B3:$B$10,0),),"")

E2 =VLOOKUP(ROW(A1),G$2:H$10,2,0)

F2 =OFFSET(G$2,MATCH(ROW(A1),G$2:G$10,0)-1,VLOOKUP(ROW(A1),G$2:I$10,3,0)+4)

 

D2에서 전체 중 중복 수의 최대를 구합니다. (하지 않아도 상관 없지만 확실히 하기 위함) G:M열을 각각 잡아 아래로 데이타 행 만큼 복사,  M열을 잡아 오른쪽으로 L열부터 데이타 수가 D2의 값이 될 만큼 복사합니다. 이후 E2:F2 잡아 아래로 데이타가 다 나올 때 까지 (#N/A! 에러가 뜰 때 까지) 복사하면 E:F열에 결과표를 얻습니다.