논리/엑셀 프로그래밍

공란이 아닌 셀 순번 매기기

섬그늘 2008. 11. 14. 13:45

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 잡아 아래로 채워 넣으면 표가 완성됩니다.