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
公式中途停止,并且不会继续整个列的持续时间。请帮助!
答案 0 :(得分:0)
看起来您使用Macro Recorder来获取此代码。您提供的代码是当您选择名为" MoM",然后是单元格H2,然后在Excel中键入=VLOOKUP()
函数时所发生的代码。从那里,我认为你试图将VLOOKUP公式拖到右边并获取值。您的代码无法工作的原因是因为VLOOKUP正在尝试获取表数组的相对引用。但是,您需要绝对引用才能使代码正常工作。实际上,在" MoM"中,唯一值应该从一个单元转换到另一个单元。 sheet将是VLOOKUP函数的列引用。一种解决方案是使用以下循环来更改VLOOKUP函数的列索引:
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
对于Table Array
和MoM
表,我在Excel中使用了以下设置: