논리/엑셀 프로그래밍

같은 양식 여러 개 데이타 추출

섬그늘 2008. 11. 13. 15:17

편의 상 같은 시트에 예시했고 실전의 많은 데이타인 경우 별도 시트에서 작업하시는 것이 훨씬 편하겠지요. 별도 시트에서는 아래 17행 이후를 입력하고 B21의 INDEX 범위만 원본 시트의 해당영역을 드래그하여 지정해주면 됩니다.

 

 

B

C

D

E

F

G

2

사원번호

사원이름

전화번호

주소

 

 

3

2

345

홍은동

 

 

4

1

213

역삼동

 

 

5

3

254

사당동

 

 

6

 

 

 

 

 

 

7

사원번호

사원이름

전화번호

주소

 

 

8

4

823

신월동

 

 

9

7

762

상계동

 

 

10

6

353

면목동

 

 

11

 

 

 

 

 

 

12

사원번호

사원이름

전화번호

입사일자

 

 

13

9

234

우이동

 

 

14

8

328

대방동

 

 

15

10

763

개봉동

 

 

16

 

 

 

 

 

 

17

 

data 행

 

3

 

 

18

 

양식간격

1

 

 

19

 

 

 

 

 

 

20

사원번호

사원이름

전화번호

주소

21

 

21

2

345

홍은동

0

0

22

1

213

역삼동

0

1

23

3

254

사당동

0

2

24

4

823

신월동

1

0

25

7

762

상계동

1

1

26

6

353

면목동

1

2

27

9

234

우이동

2

0

 

원본 데이타가 B2:E15에 입력되어 있을 때 데이타만 뽑으려 하면,

 

E17 =3       ; (양식 당 데이타 행 수)

E18 =1       ; (양식 간격)

F20 =ROW()+1  (복사 작업을 개시하는 행의 번호)

F21 =INT((ROW()-$F$20)/$E$17)      ; 원본의 몇째 블럭인지 계산

G21 =MOD(ROW()-$F$20,$E$17)      ; 블럭의 몇째 행에 해당하는지 계산

B21 =INDEX($B$2:$E$16,$F21*($E$17+$E$18+1)+$G21+2,COLUMN()-1)  원본에서 데이타 가져 옴.

 

B21 잡아 E21까지 복사, B21:G21 잡아 아래로 하염 없이 복사하면 원하는 표를 얻으실 수 있습니다. (CTRL+C, 아래로 화면 이동, 대충 행 번호 가늠하여 SHIFT+클릭(전체 범위 지정됨), SHIFT에서 손 떼고 CTRL+V 하는 것이 편함)

 

위에 나열된 수식은 설명을 위해서 적은 것이고, F21과 G21을 쓰지 않으려면

 

B21 =INDEX($B$2:$E$16,INT((ROW()-$F$20)/$E$17)*($E$17+$E$18+1)+MOD(ROW()-$F$20,$E$17)+2,COLUMN()-1)

 

를 입력하여 B21을 E21까지, B21:E21 잡아 아래로 복사하면 같은 효과를 얻습니다.

 

아래는 간략한 설명입니다.

 

위와 같이 같은 양식이 행으로 반복되는 경우 데이타만 뽑고 싶을 때라면 INDEX함수를 쓰는 것이 좋습니다. 전체 데이타 영역을 참조영역으로 잡아 x, y 축 좌표만 지정하면 알아서 찾아 줍니다. 위의 예에서 양식 당 데이타 수는 3개 (님의 경우는 20일 것입니다), 양식 간 행 띄움은 1행입니다. 이걸 지정해 줘야 몇 칸을 종횡으로 뛸 것인지 INDEX 함수에게 알려줄 수 있습니다.

'논리 > 엑셀 프로그래밍' 카테고리의 다른 글

합계를 항목별 임의 배분   (0) 2008.11.13
m~n 중 3개 고르는 조합   (0) 2008.11.13
주소의 동만 표시하기  (0) 2008.11.13
중복 VLOOKUP  (0) 2008.11.13
표에 없는 숫자 표시  (0) 2008.11.13