首页 文章

通过VBA运行excel公式

提问于
浏览
0

我试图在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 回答

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

相关问题