通过VBA运行excel公式

时间:2015-03-25 06:36:06

标签: excel vba excel-vba

我试图在2张纸上VLOOKUP一些值,如果找到了值,那么我在Sheet 1单元格上放置一个超链接,将其指向Sheet 2单元格。

我已经写了相同的Excel公式,它工作正常。但我无法将其转换为VBA公式。我做错了什么?

Excel公式:     =IF(ISERROR(VLOOKUP(RC[7],Sheet2!R1C1:R20C1,1,FALSE)),RC[7],HYPERLINK(CELL("address",INDEX(Sheet2!R1C1:R20C1,MATCH(RC[7],Sheet2!R1C1:R20C1,0))),RC[7]))

我试过的VBA公式:

Sheets(4).Formula = "= IF(ISERROR(VLOOKUP(RC[7],Sheet2!R4C2:R" & Lrow2 & "C2,1,FALSE)),RC[7],HYPERLINK(CELL(" & """address""" & ",INDEX(Sheet2!R4C2:" & "R" & Lrow2 & "C2,MATCH(RC[7],Sheet2!R4C2:" & "R" & Lrow2 & "C2,0))),RC[7]))"

P.S。:不要担心行索引和列索引。我为测试文件编写了公式,并为主文件编写了vba。

2 个答案:

答案 0 :(得分:1)

你做的只是一个小错误。

Sheets(4).Formula = ""表示在sheet4上应用的公式。逻辑表4有几乎百万行。公式在哪里?

Sheet(4).cells(row, column).Formula = ""

这是我刚刚为sumif写了几分钟的一个例子

  shPivotAdjustmentsIRSPV.Cells(NumRows, NumColumns + 1).Formula =
 "=Sum(" & shPivotAdjustmentsIRSPV.Cells(3, NumColumns + 1).Address &
 ":" & shPivotAdjustmentsIRSPV.Cells(NumRows - 2, NumColumns +
 1).Address & ")"

答案 1 :(得分:0)

除了范围之外,如果要使用R1C1引用,则需要使用.FormulaR1C1属性:

Sheets(4).Range("A7").FormulaR1C1 = "=IF(ISERROR(VLOOKUP(RC[7],Sheet2!R4C2:R" & Lrow2 & "C2,1,FALSE)),RC[7],HYPERLINK(CELL(""address"",INDEX(Sheet2!R4C2:R" & Lrow2 & "C2,MATCH(RC[7],Sheet2!R4C2:R" & Lrow2 & "C2,0))),RC[7]))"