논리/엑셀 프로그래밍

데이타 블록을 시간행 기준 정렬, 빈칸 삽입

섬그늘 2008. 11. 29. 09:14

아래 표를 긁어 엑셀시트에 붙인 후 수식 역시 마우스로 긁어 복사, 해당 주소창에 붙여 넣은 후 찬찬히 이해한 후 응용해 보세요.

 

 

A

B

C

D

E

F

G

H

I

J

1

4

 

 

 

 

 

 

 

 

 

2

0

9:00

간식시간

차수연

 

0

0

9:00

간식시간

차수연

3

1

 

수프 과일

 

 

0

1

 

수프 과일

 

4

8

15:30

영어동화

김희영

 

0

2

 

 

 

5

9

 

잭 콩나무

 

 

1

0

9:00

조회

김김김

6

6

14:00

구연동화

손수진

 

1

1

 

안부

 

7

7

 

걸리버

 

 

1

2

 

 

 

8

2

9:00

조회

김김김

 

2

0

12:00

점심

김선분

9

3

 

안부

 

 

2

1

 

카레

 

10

4

12:00

점심

김선분

 

2

2

 

 

 

11

5

 

카레

 

 

3

0

14:00

구연동화

손수진

12

 

 

 

 

 

3

1

 

걸리버

 

13

 

 

 

 

 

3

2

 

 

 

14

 

 

 

 

 

4

0

15:30

영어동화

김희영

15

 

 

 

 

 

4

1

 

잭 콩나무

 

16

 

 

 

 

 

4

2

 

 

 

 

A1 =INT(MAX(A2:A11)/2) ; 전체 블록 수, 참고/확인용, 없어도 됨
A2 =IF(B2="",A1+1,(SUMPRODUCT(ISNUMBER(B$2:B$11)*(B2>B$2:B$11))+SUMPRODUCT(ISNUMBER(B$1:B1)*(B2=B$1:B1)))*2)
F2 =INT((ROW()-ROW($F$2))/3) ; 블록 일련번호
G2 =MOD(ROW()-ROW($G$2),3) ; 블록 중 행 번호
H2 =IF(OR($G2=0,AND($G2=1,COLUMN()-COLUMN($H$2)=1)),VLOOKUP($F2*2+$G2,$A$2:$D$11,COLUMN()-COLUMN($F$2),0),"")

 

원본데이타는 예시와 같이 2행 보다는 밑에 오도록 위치시키십시오. (1행부터 시작하면 오류가 발생합니다.)

 색상이 없는 셀은 드래그 복사입니다. H2 잡아 H2:J16에 복사해 넣으면 표가 완성됩니다. 표 완성 후 H열은 시간 서식을 따로 지정해주셔야 할 겁니다.

 

간단한 설명입니다. A2에서 일련번호를 매깁니다. F2, G2에 사전 번호를 나열하고 H2로써 그 번호를 넣어 VLOOKUP으로 원본데이타를 가져옵니다. 예시에서는 (그럴 일 없겠지만) 같은 시간의 블록데이타가 존재할 경우에도 순차적으로 빠짐없이 가져오도록 했습니다.