논리/엑셀 프로그래밍

중복 VLOOKUP

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

 

B

C

D

E

F

H

2

업체명

품목코드

품목명

 

 

 

3

100

신라면

 

B4

 

4

107

진로

 

B5

 

5

102

새우깡

 

B6

 

6

108

참이슬

 

B7

 

7

104

사발면

 

B8

 

8

105

맛동산

 

B9

 

9

 

 

 

 

 

 

10

업체명

품목코드

품목명

 

2

업체명 위치

11

107

진로

 

FALSE

F11이 에러?

12

 

108

참이슬

 

107

처음 품목코드

13

105

맛동산

 

107

에러이면 null

14

100

신라면

 

2

위 코드 위치

15

 

102

새우깡

 

B4

위 업체 위치

16

 

104

사발면

 

위 업체명

17

 

 

 

 

108

다음 검색 수행

18

 

 

 

 

108

종합

 

데이타베이스가 B2:D8에 있을 때,

1. F3 ="B"&(ROW()+1)         이하 F8까지 복사

2. 출력시트의 B11 이하는 공백 상태에서 출발

3. C11 =IF(ISERROR(MATCH(B11,$B$3:$B$8,0)),"",INDEX($B$3:$C$8,MATCH(B11,$B$3:$B$8,0),2))

4. D11 =IF(ISERROR(VLOOKUP(C11,C$3:D$8,2,FALSE)),"",VLOOKUP(C11,C$3:D$8,2,FALSE))

    D11 잡아 D12까지 복사해 둠.

 

5. C12 =IF(B12="",IF(ISERROR(VLOOKUP(INDIRECT("B"&(MATCH(C11,C$3:C$8,0)+2)),INDIRECT(INDEX(F$3:F$8,MATCH(C11,C$3:C$8,0),1)):F$8,2,FALSE)),"",VLOOKUP(INDIRECT("B"&(MATCH(C11,C$3:C$8,0)+2)),INDIRECT(INDEX(F$3:F$8,MATCH(C11,C$3:C$8,0),1)):F$8,2,FALSE)),IF(ISERROR(MATCH(B12,$B$3:$B$8,0)),"",INDEX($B$3:$C$8,MATCH(B12,$B$3:$B$8,0),2)))

 

6. C12:D12 잡아 원하는 만큼 아래로 복사하면 작업시트 완성

 

(해설 셀) ; C12셀의 의미 - F18을 한 셀로 만든 것임.

F10 =MATCH(B11,$B$3:$B$8,0)

F11 =ISERROR(F10)

F12 =INDEX($B$3:$C$8,F10,2)

F13 =IF(F11,"",F12)

F14 =MATCH(C11,C$3:C$8,0)

F15 ="B"&(F14+2)

F16 =INDIRECT(F15)

F17 =VLOOKUP(F16,INDIRECT(INDEX(F$3:F$8,F14,1)):F$8,2,FALSE)

F18 =IF(B12="",IF(ISERROR(F17),"",F17),IF(F11,"",F12)

 

설명 : C12셀에서, 왼쪽 업체명이 비어 있으면 바로 위 코드명의 업체의 상품이 더 있는지 칸을 하나 내려 검색함. 만약 없으면(VLOOKUP이 ISERROR를 발생시키면) C12셀을 빈 칸 그대로 두고, 있으면 다음 코드를 출력함. 만약 왼쪽 업체명이 차 있으면 처음 품명코드를 찾아 출력(C11셀과 동일)함.

 

이제 B11부터 원하는 업체명을 입력하면 코드, 품명을 있는 대로 찾아 아래로 출력합니다.

좀 더 간단하게 할 수 있을지는 모르지만 그건 포기했습니다. 그리고 데이타베이스의 마지막 업체명을 입력하면 줄줄이 같은 것이 밑에 채워지는데 엑셀의 한계인 듯...즉, VLOOKUP(데이타, B9:F8, 2,FALSE)가 에러로 인식되지 않습니다 --+

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

같은 양식 여러 개 데이타 추출  (0) 2008.11.13
주소의 동만 표시하기  (0) 2008.11.13
표에 없는 숫자 표시  (0) 2008.11.13
HLOOKUP  (0) 2008.11.13
LSM (최소자승법)  (0) 2008.11.13