2012-10-22 5 views
1

저는 Excel VBA에 대한 완전한 초보자입니다.Excel VBA Vlookup 문제

다음은 시트의 열을 반복하면서 왼쪽에있는 열 값을 참조하여 값을 채우고 같은 통합 문서의 다른 시트를 참조하여 올바른 값을 찾아야하는 코드입니다 있다.

Dim result As String 
Dim sheet As Worksheet 
Dim rownum As Integer 
Dim iterator As Integer 
Dim lookup_value As String 
Dim vlookupString1 As String 

Set sheet = ActiveWorkbook.Sheets("datasheet") 
rownum = sheet.Range("A1").End(xlDown).Row 
Set iterator = 3 

While iterator < rownum 

lookup = "M" & iterator 
vlookup1String = "=VLOOKUP(" & lookup & ",'GICS Sub-industry codes'!$A$2:$B$155,2,FALSE)" 
With ActiveSheet.Cells 
     Range("N" & iterator).Select 
     Selection.Value = vlookup1String 
End With 
iterator = iterator + 1 

End While 
: 전 (왼쪽 열을 나타내는 변수되어야 만 조회 값 변화) 열의 각 셀이 VLOOKUP 매크로를 적용 할 수 있도록

I는 While 루프를 사용한

"예상되는 경우 또는 선택하거나 하위라고 말하면서 오류가 발생합니다 ..."

1) 구문 오류가 발생 했습니까?
2) 내 접근 방식이 올바른 것입니다. 나는이 문자열 접근 방식을 에 에 다른 한 곳에서만 설계했다. 그것은 가장 적합하게 보였다.

+0

Selection.Value = vlookup1String 아마도 Selection.Formula = vlookup1String이되어야합니다. – Dan

+0

또한 ActiveSheet.Cells가 당신의 작업을 수행하고 있다고 생각하지 않습니다. – Dan

+0

먼저 시트 이름이 너무 길지 않아야하며 VBA 코드로 작업 할 때 공백이 없어야합니다. 또한 선택을 시도하십시오.수식 – Ahmad

답변

3

당신은 당신의 루프 Wend하지 End While를 사용해야합니다
코드 수정.

클리너 대체
하지만 "루프까지"End(xlup)를 사용하여 바닥의 범위 End(xlDown) 아래로 보는 것보다 더

  1. 아래로 하나의 샷 전체 ​​범위를 채울 수
  2. 당신은 거의

VBA에서 Select를 사용할 필요가 없습니다 (이는 공백에 의존) 추가 설명

  1. rng1은 A3에 시트 시트에 열 A 마지막으로 사용 된 세포에서 작동 범위를 설정
  2. rng1.Offset(0, Range("N1").Column - 1) 말한다 오프셋 rng1 열 N을 사용하는 13 열 그래피 (칼럼 A는 이는) (즉, 14-1에 의한 오프셋 A)
  3. 매크로 레코더를 사용하여이 부분의 열 N에 필요한 코드를 얻었습니다 "=VLOOKUP(RC[-1],'GICS Sub-industry codes'!R2C1:R155C2,2,FALSE)".
  4. R1C1 말하기, RC[-1]는 동일한 행의 셀을 의미하지만 왼쪽의 하나의 열을 의미합니다. 그래서 N3에서 수식 =VLOOKUP(M4..)로 시작되므로 N30에서는, 수식 = VLOOKUP '로 시작한다 (M30 ..) 등

추천 코드

Sub QuickFill() 
Dim ws As Worksheet 
Dim rng1 As Range 
Set ws = Sheets("datasheet") 
Set rng1 = ws.Range(ws.[a3], ws.Cells(Rows.Count, "A").End(xlUp)) 
rng1.Offset(0, Range("N1").Column - 1).FormulaR1C1 = "=VLOOKUP(RC[-1],'GICS Sub-industry codes'!R2C1:R155C2,2,FALSE)" 
End Sub 
+0

코드를 설명 할 수 있습니까? 나는 그것을 완전히 이해할 수 없다. 특히 정확히 오프셋이 무엇입니까. 나는 데이터 시트에 약 4-5 개의 다른 열을 만들 필요가있는 그런 vlookup을 여러 개 가지고 있으므로 같은 것을 재현해야 할 것이다. 감사합니다 :) – Vivek

+0

"데이터 시트"워크 시트의 N 열에있는 셀 값은 M 열의 셀 값을 검색하여 "GICS .."시트의 A 열에서 검색 한 다음 그 행에 대한 B 열의 해당 값 ... 논리가 지금하고있는 것입니까? – Vivek

+0

@ user1638796 추가 세부 사항을 추가했습니다. 희망이 도움이 – brettdj