2015-03-25 135 views
0

我试图使用sumifs基于检查'details sheet'中的其他两列匹配其中的值来在不同工作簿中生成名为'Details Sheet'的工作表中特定列的总和当前工作表。 现在我有以下在sumifs公式中使用工作簿名称

ThisWB = ActiveWorkbook.Name 

在宏的开始。

在宏后来我焦点切换到片/工作簿,我的工作出来,并使用:

Dim sheet As String 
sheet = "'[" & ThisWB & "]Details Sheet'!" 
Range("F3").Select 
ActiveCell.FormulaR1C1 = _ 
     "=SUMIFS(INDIRECT(sheet & ""$H:$H"")),INDIRECT(sheet & ""$D:$D"")),""=""&$B3,INDIRECT(sheet & ""$E:$E"")),""=""&$C3)" 

这产生一个错误。我曾尝试过其他各种方式来引用该工作表,但他们都没有工作。

当我使用工作簿的全名(即[workbook1]Details Sheet!'$D:$D)参考工作表时,确实有效。

我在这里错过了什么?

+0

为什么你需要在那里间接? – Rory 2015-03-25 12:33:10

+0

我已尝试没有间接也,但没有奏效。间接允许我使用文本创建引用,这似乎是逻辑使用 – Bobert3 2015-03-25 12:34:09

+0

请检查:[当某人回答我的问题时该怎么办?](http://stackoverflow.com/help/someone-answers) 。 – 2015-04-25 04:13:03

回答

0

您需要Formula属性,而不是FormulaR1c1因为你正在做的级联中的代码,而不是公式本身就不需要间接:

Range("F3").Formula = _ 
    "=SUMIFS(" & sheet & "$H:$H," & sheet & "$D:$D,""=""&$B3," & sheet & "$E:$E,""=""&$C3)" 
+0

非常感谢你!那工作。 – Bobert3 2015-03-25 13:08:12

相关问题