http://kin.naver.com/detail/detail.php?d1id=1&dir_id=1050202&eid=m89HQaww7ybFpFrNaJkkQnNahQ07vZiw
아래를 참고하여 응용해 보세요. 대개 이런 유형은 배열수식을 쓰면 간단한데 셀이 엄청나게 많다시니 속도 문제가 있을 터, 보조열을 써서 실전적으로 해결하는 방식 중 하나입니다.
|
A |
B |
C |
D |
E |
F |
G |
H |
I |
J |
K |
L |
M |
N |
O |
P |
Q |
R |
S |
1 |
|
test1 |
test2 |
test3 |
test4 |
test5 |
|
|
|
|
|
|
|
|
1 |
2 |
3 |
4 |
5 |
2 |
0 |
10 |
|
20 |
30 |
|
3 |
|
1 |
|
2 |
3 |
|
|
1 |
3 |
4 |
|
|
3 |
1 |
50 |
20 |
|
|
|
2 |
|
1 |
2 |
|
|
|
|
1 |
2 |
|
|
|
4 |
2 |
20 |
|
|
|
|
1 |
|
1 |
|
|
|
|
|
1 |
|
|
|
|
5 |
3 |
|
30 |
|
|
40 |
2 |
|
|
1 |
|
|
2 |
|
2 |
5 |
|
|
|
6 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7 |
0 |
test1 |
test3 |
test4 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8 |
0 |
10 |
20 |
30 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
9 |
1 |
test1 |
test2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
10 |
1 |
50 |
20 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
11 |
2 |
test1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
12 |
2 |
20 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
13 |
3 |
test2 |
test5 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
14 |
3 |
30 |
40 |
|
|
|
|
|
|
|
|
|
|
|
|
|
데이타가 B1:F5에 있을 때, O1:S1 및 A2:A5에 일련번호를 매겨 둔 후,
G2 =COUNTA(B2:F2) ; 각 행의 데이타 수, G5까지 복사
I2 =IF(ISNUMBER(B2),COUNTA($B2:B2),"") ; 데이타 순번 1, I2:M5에 복사
O2 =IF(O$1>$G2,"",MATCH(O$1,$I2:$M2,2)) ; 데이타 순번 2, O2:S5에 복사
A7 =INT((ROW()-ROW(A$7))/2) ; 행번호로써 일련번호 생성, A8에 복사
B7 =IF(O$1>VLOOKUP($A7,$A$2:$G$5,7,0),"",INDEX($B$1:$F$1,VLOOKUP($A7,$A$2:$S$5,COLUMN(O$1),0))) ; 데이타 순번 2로써 인덱스 가져 오기, F7까지 복사
B8 =IF(B7="","",VLOOKUP($A8,$A$2:$F$5,MATCH(B7,$B$1:$F$1,0)+1,0)) ; 각 행의 데이타 가져 오기, F8까지 복사
이제 A7:F8 잡아 아래로 채워 넣으면 표가 완성됩니다.
'논리 > 엑셀 프로그래밍' 카테고리의 다른 글
기준 구간이 많은 시간 계산 (0) | 2008.11.14 |
---|---|
중복 없는 난수 발생, 시간 구간 계산 (0) | 2008.11.14 |
유동참조 COUNTIF (0) | 2008.11.14 |
경우의 수 (8*5, 12ab) (0) | 2008.11.14 |
중복된 데이터를 하나로 보고, 순위를 구하여 원하는 데이터를 찾기 (0) | 2008.11.14 |