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열에 결과표를 얻습니다.
'논리 > 엑셀 프로그래밍' 카테고리의 다른 글
사이값 찾아서 결과치 반납 (0) | 2008.11.14 |
---|---|
평균학점 구하기 (0) | 2008.11.14 |
토요 교대근무 평일/특근 연장시간 구분 (0) | 2008.11.14 |
동점일 때 과목 점수 순으로 등수 매기기 (2) (0) | 2008.11.14 |
동점일 때 과목 점수 순으로 등수 매기기 (0) | 2008.11.14 |