2013-10-15 2 views
2

2 열이있는 간단한 테이블이 있습니다. 첫 번째 열은 1에서 10까지의 숫자를 가지며 두 번째 열은 숫자의 철자가있는 버전이어야합니다 (예 : 1, 2 , 세, ..., 텐).엑셀 매크로 - 빈 셀에서만 vlookup을 수행합니다.

테이블에 vlookup을 수행하여 vlookup 참조로 첫 번째 열의 값을 사용하여 두 번째 열을 자동으로 채우는 매크로를 작성하고 싶습니다. 그러나 아직 채워지지 않은 셀에만 즉 빈 셀에서만). 단지 공백이 표시되도록

Private Sub Button_Click() 

    Range("B3").AutoFilter Field:=2, Criteria1:="" 
    Range("C3:C12").Value = WorksheetFunction.VLookup(Range("B3:B12"),  
    Sheet2.Range("B2:C11"), 2, False) 

End Sub 

첫 번째 줄 목록을 필터링 :

나는 내가 매크로 사용 버튼을 클릭하면 실행 다음과 같은 코드가 있습니다. 두 번째 줄은 필터링 된 셀에만 vlookup을 적용해야합니다. 그러나 일부 셀을 비워두고 매크로를 실행하면 vlookup이 잘못 수행됩니다. 예를 들어 4 행 7 행의 데이터를 삭제하고 (예 : "Four"및 "Seven"삭제) vlookup을 수행하면 목록이 올바르게 필터링되지만 "Four"및 "Seven"은 vlookup 테이블에서 "One"과 "One"을 위로 가져옵니다.

아무도 도와 줄 수 있습니까?

감사합니다.

답변

2

값은 개별 셀이 아닌 첫 번째 셀에 대해 가져옵니다.

먼저 각 셀의 올바른 값을 계산하는 공식을 얻은 다음 해당 셀의 값을 붙여 넣으십시오.

dim rgLoop as range 

Range("B3").AutoFilter Field:=2, Criteria1:="" 

Range("C3:C12").specialcells(xlcelltypevisible).formular1c1="=VLookup(RC2, Sheet2!B2:C11, 2, False)" 

for each rgLoop in Range("C3:C12").specialcells(xlcelltypevisible) 
    rgLoop.value=rgLoop.value 
next rgLoop 
+0

사실. 내 의견을 삭제했습니다. –

0

이 코드를 사용하여 달성하려는 목표는 무엇입니까? 이상한 유스 케이스로 보인다.

= 경우 ([CellWithWordIn] <> ""[CellWithWordIn, VLOOKUP 수식)

: -

어쨌든 내가 매크로 신경 쓰지 것, 난 그냥 같은과 열을 추가 할

이렇게하면 vlookup 호출이 최소화되고 추가 if 함수가 문제가되지 않습니다.