自动填充公式

时间:2018-07-28 12:49:29

标签: vba excel-vba excel-formula

因此,我正在尝试使Excel自动将公式填充到F列中,该公式将A列中的值(F和A列都在标有“ PMG”的工作表中)与另一张工作表中的A列中的值进行比较(“ Sheet1“)。这是我所拥有的:

   ThisWorkbook.Sheets("PMG").Range("F2").Formula = "=VLOOKUP(A2,Sheet1!A:A,1,FALSE)"
   ThisWorkbook.Sheets("PMG").Range("F2", "F" & Cells(Rows.Count, 1).End(xlUp).Row).FillDown

此代码最初在此处找到:https://www.mrexcel.com/forum/excel-questions/812384-vba-macro-applies-formula-down-column-until-last-row.html

我遇到的问题是,自动填充仅在“ Sheet1” A列中填充的单元格中下降,而不是在“ PMG” A列中填充的单元格中下降。因此,与其自动填充180行公式,不如仅填充80行。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

尝试用With块包装,以确保始终使用正确的纸张。

Option Explicit
Public Sub test()
    With ThisWorkbook.Sheets("PMG")
        .Range("F2").Formula = "=VLOOKUP(A2,Sheet1!A:A,1,FALSE)"
        .Range("F2:F" & .Cells(Rows.Count, 1).End(xlUp).Row).FillDown
    End With
End Sub

您也可以使用R1C1表示法代替填充。

Option Explicit
Public Sub test()
    With ThisWorkbook.Sheets("PMG")
         .Range("F2:F" & .Cells(Rows.Count, 1).End(xlUp).Row).FormulaR1C1 = "=VLOOKUP(RC[-5],Sheet1!C[-5],1,FALSE)"
    End With
End Sub