1

我正在尝试将 vlookup 添加到 excel 宏中的单元格,但是我似乎无法正确获取函数的参数或范围函数的参数

请帮助我说明如何编写我的代码的最后一行:

            RangeStartRow = 2
            RangeStartColumn = 1 + 11 + (3 * (AverageSheetIndex - RowCounter - 1))
            RangeEndRow = LastCol
            RangeEndColumn = 2 + 11 + (3 * (AverageSheetIndex - RowCounter - 1))
            ActiveCell.Formula = WorksheetFunction.VLookup(ActiveWorkSheet.Cells(1, c), ActiveSheet.range(Cells(RangeStartRow, RangeStartColumn), Cells(RangeEndRow, RangeEndColumn)), 2, False)

我相信代码是直接的(不要介意前 4 行的值),我希望对活动单元格进行 vlookup 以在上面声明的 4 个值的范围内查找单元格(1,c)。

请让我知道如何重写我的代码的最后一行。

提前致谢。

4

1 回答 1

2

ActiveCell.Formula需要一个字符串,该字符串表示您希望在单元格中包含的公式。

 ActiveCell.Formula = "=vlookup(" & activecell.offset(0,1).address & ....

我通常首先在工作表中手动创建公式,然后在调试窗口中键入(对于 C3 中的公式)

? range("C3").formulaR1C1

然后,如果需要,我会编辑公式并将其复制到我的代码中。使用 formulaR1C1 避免检索字母:对于 ActiveCell beeing $C$4,

"=D4" is equivalent to "=RC[1]"
"=$D$4" is equivalent to "=R4C4"

如果你真的想检索 MyCol 的列字母,你可以使用:

split(cells(1,MyCol).address,"$")(1)

为了帮助您修改公式,我有时使用以下子程序,从调试窗口调用:

Sub RngToVba(src As Range)
'Helps to write VBA code that will reproduce formula from existing sheet.
'writes (to the debug window) the VBA code to re-create the formulae in given range
'by Patrick Honorez - www.idevlop.com
'usage: from debug window, type RngToVba [L14:R14]
'                            or RngToVba range("L14:R14")
'then copy generated code to your module
    Dim c As Range
    For Each c In src
        Debug.Print "range(""" & c.Address & """).formula = """ & _
                    Replace(c.Formula, """", """""") & """"""
    Next c
End Sub
于 2010-12-23T10:57:32.393 回答