【发布时间】:2017-07-18 22:03:07
【问题描述】:
我的代码是=SUMPRODUCT(H50:AA69*(H5:AA5=B10)*ISNUMBER(MATCH(F50:F69,K18:K24,0)))
其中 h50:aa69 是我的数据表,h5:aa5 是我的年份行(b10 是我用来过滤数据表的标准年份,将选择范围缩小到单列)。 F50:F69 是一列标识符,我的条件范围 K18:K24 将进一步从单列中过滤掉行。
我的公式在 Excel 中有效。我尝试将它翻译成 VBA,但我无法让它工作。有谁知道为什么?
Sheet72.Range("C22") = Application.WorksheetFunction.SumProduct((Sheet32. _
Range("h50:AA69")) * (Sheet32.Range("H5:AA5") = year) * _
Application.WorksheetFunction.IsNumber(Application.WorksheetFunction. _
Match(Sheet32.Range("f50:f69"), Sheet72.Range("K18:K24"), 0)))
【问题讨论】:
-
是
Sheet72.应该是Sheet32.? -
你的 match() 如果没有命中会导致运行时错误,所以用 isnumber() 检查返回值是行不通的。
-
@scottcraner 不,它是正确的。
-
@tim williams 你有什么推荐的?我不确定用另一个范围检查范围的任何其他方法。如果您有任何建议,请告诉我
-
您可以使用 Worksheet.Evaluate() 方法来评估适用于工作表的现有公式。