【问题标题】:evaluate function in column with cell relative reference vba使用单元格相对参考 vba 评估列中的函数
【发布时间】:2018-09-18 21:41:40
【问题描述】:

我需要在第 24 列中写入包含对相关单元格的引用的 IF 公式的结果。我认为最好的方法是使用 Evluate 函数,但我不明白如何在公式中编写每个单元格的相对引用。 这是我的代码

Set Rng1 = Sheets("Leaders").Cells(12, 19)

g = Evaluate("IF(OR(" & Rng1.Offset(, -3).Address(False, False) & "=""x""," & Rng1.Offset(, -5).Address(False, False) & "=""1:1 matching"")," & Rng1.Offset(, 3).Address(False, False) & "*" & Rng1.Offset(, 4).Address(False, False) & ")")


Sheets("Leaders").Range(Cells(12, 24), Cells(lastRow1, 24)) = Evaluate(g)

第 24 列的所有单元格中的结果为零

【问题讨论】:

  • 你已经评估过了,为什么= Evaluate(g)?它可能应该只是= g
  • 是的,对不起,错字;正确的代码是Sheets("Leaders").Range(Cells(12, 24), Cells(lastRow1, 24)) = g
  • 使用评估方法,您需要循环行。或者您可以创建第一个字符串,然后将整个字符串作为一个公式放入所有单元格中。
  • 但这没有循环c = Evaluate("INDEX($AA$12:$CD$3207,0,MATCH(" & Rng.Address(False, False) & ",$AA$10:$CD$10,0)+7)")
  • 那是因为该公式返回一个数组。您正在使用的那个不返回一个数组,而是一个值。

标签: vba if-statement range evaluate


【解决方案1】:

使用下面的代码。

Sheets("Leaders").Range(Cells(12, 24), Cells(lastRow1, 24)) = "=IF(OR(RC[-8]=""x"",RC[-10]=""1:1 matching""),RC[-2]*RC[-1])"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-01
    • 2014-04-16
    • 2018-08-01
    • 1970-01-01
    相关资源
    最近更新 更多