【发布时间】: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