2017-06-09 4 views
-1

Also schreibe ich ein Skript, um zwei Excel-Dateien zu vergleichen.Mein Skript zum Vergleichen zweier Excel-Dateien funktioniert nicht

Ich bin mit einem For-Schleife in der ersten Arbeitsmappe, die Verweise auf bekomme ich in der zweiten Arbeitsmappe (6450 Zeilen lang, so dass keine For-Schleife, Art und Weise langsam) finden will

ich gesucht habe eine Möglichkeit, die VLOOKUP, was zu verwenden, aber ich konnte es nicht hier funktioniert der Code:

For i = 7 to numLines ''numLines is the number of used lines of the first workbook 

    If '''test to get out of the LOOP 
objExcel.Workbooks(Str1).Sheets(1).Range("D"&i)="" AND objExcel.Workbooks(Str1).Sheets(1).Range("H"&i)="" AND objExcel.Workbooks(Str1).Sheets(1).Range("L"&i)="" Then 

     i = numLines 

    Else '' here i get the reference (the 6 first digits of the first workbook and I try to find it in the second) 

     If objExcel.Workbooks(Str1).Sheets(1).Range("D"&i)<>"" Then 

      Reference = Mid(objExcel.Workbooks(Str1).Sheets(1).Range("D"&i),1,6) 

      Set table_lookup = objExcel.Workbooks(Str1).Sheets(1).Range("C1:C" & numLines2) 
      cell = objExcel.Workbooks(Str2).WorksheetFunction.vlookup(Reference, table_lookup, 0, False) 
      MsgBox cell.row 
      MsgBox cell.column 

     End If 

    End If 

Next 
+1

Bitte Fügen Sie eine Beschreibung des Fehlers, den Sie erhalten, oder des erwarteten Verhaltens hinzu, um eine geeignete Anleitung zur Lösung Ihres Problems zu geben. – sirandy

Antwort

2

Sie haben anstelle der vlookup zum „finden“ Methode zu wechseln, die nicht auf vba

zu funktionieren scheint
For i = 7 to numLines 
    If objExcel.Workbooks(Str1).Sheets(1).Range("D"&i)="" AND objExcel.Workbooks(Str1).Sheets(1).Range("H"&i)="" AND objExcel.Workbooks(Str1).Sheets(1).Range("L"&i)="" Then 
     i = numLines 
    Else 
     If objExcel.Workbooks(Str1).Sheets(1).Range("D"&i)<>"" Then 
      Reference = Mid(objExcel.Workbooks(Str1).Sheets(1).Range("D"&i),1,6) 
       Set r = objExcel.Workbooks(Str2).Sheets(1).Range("C1:C" & numLines2) 
      Set matched = r.Find(Reference) 
      If Not r.Find(Reference) Is Nothing Then 
       objExcel.Workbooks(Str1).Sheets(1).Range("R"&i).Value = matched.Offset(0,0).Value 
       objExcel.Workbooks(Str1).Sheets(1).Range("S"&i).Value = matched.Offset(0,1).Value 
       objExcel.Workbooks(Str1).Sheets(1).Range("T"&i).Value = matched.Offset(0,2).Value 
       objExcel.Workbooks(Str1).Sheets(1).Range("U"&i).Value = matched.Offset(0,3).Value 
       objExcel.Workbooks(Str1).Sheets(1).Range("V"&i).Value = matched.Offset(0,6).Value 
      End If    
     End If 
    End If 
Next 
Verwandte Themen