2016-05-19 5 views
0
Sheets("MoM").Select 

Range("H2").Select 
ActiveCell.FormulaR1C1 = "=VLOOKUP(C[-7],'Table Array'!C[-7]:C[2],8,FALSE)" 
Range("H2").Select 
Selection.AutoFill Destination:=Range("H2:H" & Range("G" & Rows.Count).End (xlUp).Row), Type:=xlFillSeries 

Die Formel stoppt auf halbem Wege und setzt nicht die gesamte Dauer der Spalte fort. Bitte Hilfe!Wie kann ich sicherstellen, dass die SVERWEIS-Formel die gesamte Spalte füllt?

+0

Sind Bist du sicher, dass deine Formel stimmt? Soll das sein = SVERWEIS ('R'C [-7], 'Tabellenarray'! C [-7]: C [2], 8, FALSCH)? – Jochen

+0

Dieser Code wird col bis zur letzten Zeile in Spalte G automatisch füllen. Sagst du, dass es das nicht tut, oder hast du erwartet, dass es etwas anderes tut? –

Antwort

0

Es sieht so aus, als hätten Sie den Macro Recorder verwendet, um diesen Code zu erhalten. Der Code, den Sie eingeben, geschieht, wenn Sie das Blatt "MoM" auswählen, gefolgt von der Zelle H2, gefolgt von der Eingabe der Funktion =VLOOKUP() in Excel. Von dort aus, glaube ich, hast du versucht, die SVERWEIS-Formel nach rechts zu ziehen und die Werte zu erhalten. Der Grund, warum Ihr Code nicht funktioniert, liegt daran, dass SVERWEIS versucht, relative Referenzen auf Ihr Tabellen-Array zu erhalten. Sie möchten jedoch absolute Referenzen, damit Ihr Code funktioniert. Der einzige Wert, der sich in der "MoM" -Schicht von Zelle zu Zelle ändern sollte, ist der Spaltenverweis in der SVERWEIS-Funktion. Eine Lösung ist die folgende Schleife verwenden, um Ihren Spaltenindex auf der VLOOKUP Funktion zu ändern:

Sub mcrFillRow() 
' Declare your variables 
    Dim i As Integer 
    Dim name As String 
    Dim myTable As Range 
' Set some variables to make VLookup code easier to read 
    name = Range("G2") 
    Set myTable = Worksheets("Table Array").Range("F1:K7") 
' Clear any previous values 
    Sheets("MoM").Range("H2:L2").Clear 
' For loop to go through the columns of the Table Array 
    For i = 2 To 6 
     Select Case i 
      Case 2 'VLookup the second column 
      Sheets("MoM").Range("H2") = WorksheetFunction.VLookup(name, myTable, i, False) 
      Case 3 'VLookup the third column 
      Sheets("MoM").Range("I2") = WorksheetFunction.VLookup(name, myTable, i, False) 
      Case 4 'VLookup the fourth column 
      Sheets("MoM").Range("J2") = WorksheetFunction.VLookup(name, myTable, i, False) 
      Case 5 'VLookup the fifth column 
      Sheets("MoM").Range("K2") = WorksheetFunction.VLookup(name, myTable, i, False) 
      Case 6 'VLookup the sixth column 
      Sheets("MoM").Range("L2") = WorksheetFunction.VLookup(name, myTable, i, False) 
     End Select 
    Next i 
End Sub 

Für die Table Array und MoM Blätter, benutzen ich die oben in Excel festgelegt folgenden:

enter image description here

Verwandte Themen