开发者

Excel Vlookup in macro with range

开发者 https://www.devze.com 2023-02-01 02:54 出处:网络
I\'m trying to add a vlookup to a cell in an excel macro, however I can\'t seem to get the arguments of the function right nor the arguments of the range function

I'm trying to add a vlookup to a cell in an excel macro, however I can't seem to get the arguments of the function right nor the arguments of the range function

Please help me in stating how to write last line of my code:

            RangeStartR开发者_StackOverflowow = 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)

I believe the code is straight (never mind the values of the first 4 lines), i wish to do a vlookup on the active cell to look for cell(1,c) in the range of the 4 values declared above.

Please let me know how to rewrite the last line of my code.

Thanks in advance.


ActiveCell.Formula requires a string representing the formula you want to have in the cell.

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

I generally start by creating the formula manually in the sheet, then in the Debug window I type (for a formula in C3)

? range("C3").formulaR1C1

Then I edit the formula if required and I copy that in my code. Using formulaR1C1 avoid retrieving the letter: for an ActiveCell beeing $C$4,

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

I f you really want to retrieve the column letter of MyCol, you can use:

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

To help you rework your formula, I sometimes use the following sub, to be called from debug window:

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
0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号