通过VBA运行Excel公式

我想VLOOKUP在2张工作表中的一些价值,如果find的价值,那么我把工作表1单元格上的超链接指向它的工作表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]))" 

PS:不要担心行列索引。 我写了testing文件的公式并写入主文件的vba。

只是你犯了一个小错误。

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 & ")" 

除了范围外,如果要使用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]))"