논리/엑셀 프로그래밍

다른 화일의 체크한 행만 표시

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

 

B

C

D

E

F

G

H

I

J

K

L

2

번호

제품명

제조회사

수량

 

A업체

화일주소

 

 

 

3

 

2198

신라면

농심

12

 

번호

제품명

제조회사

수량

4

 

8238

소나타

현대자동차

3

 

5209

처음처럼

두산주조

9

5

5209

처음처럼

두산주조

9

 

5538

참이슬

진로

3

6

 

2570

진라면

오뚜기식품

24

 

4323

A4 미백

신도리코

7

7

5538

참이슬

진로

3

 

이하여백

이하여백

이하여백

이하여백

이하여백

8

 

8521

프라이드

기아자동차

5

 

 

 

 

 

 

9

 

4201

색연필

바른손

6

 

 

 

 

 

 

10

4323

A4 미백

신도리코

7

 

 

 

 

 

 

11

 

4522

황화일

바른손

8

 

 

 

 

 

 

 

H4 =IF(COUNTIF($B$3:$B$11,"☞")=0,"이하여백",INDEX(B$3:B$11,MATCH("☞",$B$3:$B$11,0),1))

H5 =IF(OR(H4="이하여백",H4=""),"",IF(COUNTIF($B$3:$B$11,"☞")<ROW()-ROW(H$3),"이하여백",VLOOKUP("☞",INDIRECT("B"&(MATCH($I4,$C$3:$C$11,0)+ROW(B$2)+1)):$F$11,COLUMN()-COLUMN($H3)+1,FALSE)))

; H4:H5 잡아 L4:L5까지 복사, H5:L5 잡아 데이타 행 만큼 아래로 복사하면 초기작업 완료.

 

다음은 H:L열의 주문표 양식을 만들어 복사해 둔 후 한 화일을 열어 H4, H5의 수식창의 범위, 주소 셀 앞에 커서 위치, 업체 창의 해당 주소/범위를 클릭/드래그 하면 화일이름이 H4 (H5)주소창에 뜸. 뒤의 주소는 원본 그대로 살리고 엔터 (H4, H5 모두 3회 이렇게 왔다갔다 작업 필요함). 이 작업을 하고 나면 

 

I2 ="'C:\Data\[지식엑셀.xls]Sheet1'!"   ; A업체의 화일 경로명

H4 =IF(COUNTIF([지식엑셀.xls]Sheet1!$B$3:$B$11,"☞")=0,"이하여백",INDEX([지식엑셀.xls]Sheet1!B$3:B$11,MATCH("☞",[지식엑셀.xls]Sheet1!$B$3:$B$11,0),1))

H5 =IF(OR(H4="이하여백",H4=""),"",IF(COUNTIF([지식엑셀.xls]Sheet1!$B$3:$B$11,"☞")<ROW()-ROW(H$3),"이하여백",VLOOKUP("☞",INDIRECT($I$2&"B"&(MATCH($I4,[지식엑셀.xls]Sheet1!$C$3:$C$11,0)+ROW(B$2)+1)):INDIRECT($I$2&"F11"),COLUMN()-COLUMN($H3)+1,FALSE)))

; H4:H5 잡아 L4:L5까지 복사, H5:L5 잡아 데이타 행 만큼 아래로 복사하면 링크 작업 끝.

 

수식 설명 : H4에서 체크가 1개도 없으면 "이하여백" 표시하고 종료. 1개라도 있으면 MATCH로 위치를 검색, INDEX로 H4:L4 데이타 가져옴. H5에서는 위 셀이 "이하여백"이나 빈칸이라면 빈칸, 체크표시를 다 출력했으면 "이하여백" 그렇지 않으면 바로 위 행의 데이타 위치를 MATCH로 탐색, 그 바로 아래 행 부터 체크표시를 VLOOKUP으로 찾아 데이타 출력함. 링크를 위해 화일경로를 I2(어디든 상관 없음)에 넣고 INDIRECT를 걸어 VLOOKUP을 돌리는 것이 위 수식의 핵심임.

 

(2008.11.13 근데 유효성 검사 한 방에 해결될 터이므로, 위 수식이 필요한 경우가 있긴 있을까? 항상 의문임.)