논리/엑셀 프로그래밍

통지서 만들기 (OFFSET 유동 참조)

섬그늘 2008. 11. 14. 12:46

http://kin.naver.com/detail/detail.php?d1id=1&dir_id=1050202&eid=LVOBKfOYltjbpdVQ7qAUL9d/65Mrdv/4

 

 

B

C

D

E

F

G

H

I

2

이름

전화

 휴대

 

시작셀

 

 

 

3

손오공

546

 013

 

안녕 손오공님

안녕 사오정님

손오공

사오정

4

사오정

465

 017

 

전화 546

전화 465

546

465

5

저팔계

654

 018

 

휴대  013으로 갑니다.

휴대  017로 갑니다.

 013

 017

6

삼장

670

 010

 

안녕 저팔계님

안녕 삼장님

저팔계

삼장

7

 

 

 

 

전화 654

전화 670

654

670

8

안녕 

0

3

휴대  018로 갑니다.

휴대  010으로 갑니다.

 018

 010

9

전화 

1

 

6

 

 

 

 

10

휴대 

2

로 갑니다.

0

 

 

 

 

11

 

 

 

 

 

 

 

 

12

3

 

 

 

 

 

 

13

2

 

 

 

데이타가 B2:D6에 있을 때 (몇 천개라도 무방), 문안을 B8:D10과 같이 만들어 둠. C12는 반복 행 단위 (한 묶음이 차지하는 행의 수), C13에는 묶음 당 몇 열씩 출력할 것인지(예시에서는 F:G 2열)를 정해 입력해 둠.

 

F3 =OFFSET($B$8,MOD(ROW()-ROW($B$3),$C$12),0)&H3&IF((MOD(ROW()-ROW($B$3),$C$12)=$C$12-1)*(COUNTIF($E$8:$E$10,RIGHT(H3,1))),"으","")&OFFSET($B$8,MOD(ROW()-ROW($B$3),$C$12),2)

H3 =OFFSET($B$3,(INT((ROW()-ROW($B$3))/$C$12)*$C$13+MOD(COLUMN()-COLUMN($F$2),$C$13)),OFFSET($B$8,MOD(ROW()-ROW($B$3),$C$12),1))

 

F3를 G3에, H3를 I3에 복사, F3:I3 잡아 아래로 데이타가 다 나올 때 까지 채워넣으면 작업이 완료됩니다. F3의 수식 중 초록 부분은 숫자가 3, 6, 0으로 끝나면 "으"를 붙이는 기능이므로 수식이 길면 생략해도 무방합니다. H3의 검정주소(예시의 $B$3)는 Sheet1!$B$3 식으로 바꿔주셔야겠지요. 위 수식을 응용하면 조건부 서식으로 행별 서식을 다양하게 해 줄 수 있을 겁니다.