논리/엑셀 프로그래밍

이름 기준 중복 사전 정렬

섬그늘 2008. 11. 13. 16:09

 

B

C

D

E

F

G

H

I

J

K

2

 

원본

 

 

 

 

 

결과

 

 

3

 

이름

학력

경력

 

 

 

이름

학력

경력

4

8

홍길동

활빈당

홍길동0

2

 

김춘추

화랑

5

9

 

 

홍길동0

2

 

 

나당연합

6

10

 

 

홍길동0

2

 

 

 

7

4

장영실

해시계

장영실0

1

 

 

 

8

5

 

 

장영실0

1

 

장영실

해시계

9

6

 

 

장영실0

1

 

 

 

10

7

 

 

장영실0

1

 

 

 

11

11

홍길동

살수대첩

홍길동1

3

 

 

 

12

12

 

 

홍길동1

3

 

홍길동

활빈당

13

13

 

 

홍길동1

3

 

 

 

14

14

 

 

홍길동1

3

 

 

 

15

0

김춘추

화랑

김춘추0

0

 

홍길동

살수대첩

16

1

 

나당연합

김춘추0

0

 

 

 

17

2

 

 

김춘추0

0

 

 

 

18

3

 

 

김춘추0

0

 

 

 

 

원본데이타가 C4:E18에 있을 때,

F4 =IF(C4<>"",C4&COUNTIF(C$3:C3,C4),F3)

G4 =SUMPRODUCT(N(F$4:F$18<F4),1/COUNTIF(F$4:F$18,F$4:F$18))

B4 =SUMPRODUCT(N(G$4:G$18<G4))+COUNTIF(G$4:G$18,G4)-COUNTIF(G4:G$18,G4)

I4 =IF(INDEX($C$4:$E$18,MATCH(ROW()-ROW(I$4),$B$4:$B$18,0),COLUMN()-COLUMN($I4)+1)="","",INDEX($C$4:$E$18,MATCH(ROW()-ROW(I$4),$B$4:$B$18,0),COLUMN()-COLUMN($I4)+1))

 

; F4:G4 잡아 데이타 행 만큼 아래로 복사, B4 잡아 마찬가지 아래로 복사, I4를 복사하여 I4:K18에 붙여넣으면 결과표 완성.

 

보조셀을 B, F, G열에 둔 것은 동명이인이 있어도 빠짐없이 찾기 위해서입니다. B열의 일련번호를 만들기 위해 F열에 이름+(같은 이름이 나온 회수)로 문자열을 만들고 그 순위를 G열에 매깁니다. G열을 참조하여 일련번호를 B열에 만들고 결과표에서는 ROW함수로 일련번호를 발생시켜 MATCH를 걸어 INDEX로 데이타를 일괄 가져옵니다.