2017-03-28 1 views
1

VBA에서이 IF-THEN 문을 알아내는 데 문제가 있습니다. 현재 사용하고있는 코드는 VLOOKUP을 사용하여 열 E에 값을 가져 오지만 일부 결과는 VLOOKUP이 참조하는 탭이 포함되어 있지 않기 때문에 # N/A로 표시됩니다. 결과가 # N/A로 표시되면 VBA에서 내 통합 문서 내의 다른 탭에서 다른 룩업 (선호 색인/일치)을 수행해야합니다. 이것은 내가 지금까지 가지고있는 것입니다, 6 단계는 완벽하게 작동하지만 일부 N/A는 반환합니다. 형식 불일치VBA에서 VLOOKUP 사용 - 다른 VLOOKUP 또는 INDEX/MATCH를 참조하여 N/A를 돌보는 경우

: - 오류 '13'타임 실행

'Step 6: Copy the recordset to Excel 

With ThisWorkbook.Worksheets("DQ_Collectors_3162") 
    .Activate 
    .Range("A2:R" & Rows.Count).Clear 
    .Range("A2").CopyFromRecordset rs 

    'Dealer column 
    Dim dealerCol As String 
    Dim FinalRow As Integer 
    Dim contractCol As String 


    contractCol = ConvertToLetter(FindMatchingValueColumn("Contract ID", 1)) 
    FinalRow = .Cells(Application.Rows.Count, 1).End(xlUp).Row + 1 

    lookup = "=VLOOKUP(" & contractCol & ":" & contractCol & ",'Dealer Name 
    Index'!A:B,2,FALSE)" 
    dealerCol = ConvertToLetter(FindMatchingValueColumn("Dealer", 1)) 
    .Range(dealerCol & "2").Value = vlookup 
    .Range(dealerCol & "2:" & dealerCol & FinalRow).FillDown 
    .Range(dealerCol & ":" & dealerCol).Copy 

End With 

'Step 7: Take Care of N/A's 

    Dim R As Range 
    indexmatch = "=INDEX('IBIC Name Index'B:B,match(B:B,'IBIC Name 
    Index'A:A,0))" 

    Set R = Range("E:E") 
    If R.Value = "#N/A" Then 
    R.Value = indexmatch 

End If 

내가지고있어 오류가 있습니다 : 나는 IF-THEN 문으로 N/A의를 해결하기 위해 노력하고 같은 오류는 7 단계에서오고있다

+0

대신'R.Text'를 사용해보십시오. –

+0

그런 식으로 전체 열을 한 번에 테스트 할 수는 없습니다. 끝점을 설정하고 루프를 반복하고 각 셀을 개별적으로 테스트해야합니다. –

+0

7 단계도 수행하려면 6 단계를 변경하십시오. 예 : 'lookup = "= IFERROR ('& contractCol &": & contractCol & ", '딜러 이름 색인'! A : B, 2, FALSE), INDEX ('IBIC 이름 색인'B : B, match (B : B, 'IBIC Name Index'A : A, 0)))''(PS 변수가'lookup' 또는'vlookup'일까요?)'Option Explicit'을 코드 모듈의 첫 번째 줄로 포함하는 것을 고려할 수도 있습니다 .) – YowE3K

답변

1

전체 열을보고 직접 시도하는 방식으로 모든 셀을 단일 값으로 비교할 수는 없습니다. 열 E의 모든 #NA 오류를 처리하려면 SpecialCells를 사용하십시오.

Dim r As Range 
With Worksheets("Sheet5") 
    With Intersect(.UsedRange, .Range("E:E")) 
     For Each r In .SpecialCells(xlCellTypeFormulas, xlErrors) 
      If r.Value = CVErr(xlErrNA) Then 
       Debug.Print r.Address & " is an #NA error" 
      End If 
     Next r 
    End With 
End With 
1

당신은 다음과 같은 전체 범위를 테스트 할 수 있습니다

If WorksheetFunction.CountIf(R,"#N/A") > 0 Then