如何在excel文件中搜索多个工作表以获取值并添加其结果?

时间:2015-04-09 06:18:54

标签: excel vba excel-vba

我在电子表格中有大约20个工作表,标题为日期... 2015年1月1日,2015年4月1日,2015年6月1日等。我想根据特定单词的日期搜索每个工作表(将会有关于6个不同的词......兄弟会,青年等)。当找到该单词时,我想添加匹配单词的值。

        A              B       C

      1/2/2015

5     Brotherhood    2.00     5.00 

6     Brotherhood    10.00    5.00 

7     Brotherhood             5.00 

8     Youth          1.00     5.00 

9     Brotherhood             10.00 

10    Brotherhood    5.00     1.00 

所以,如果我参考日期1/2/2015并寻找"兄弟会"它会去工作表' 2015年12月'搜索"兄弟会"并返回第三列的总和。结果应该等于26.00。

这是我正在研究的公式,但它没有做我想要的所有事情,我将不得不手动改变我想要参考的每个日历日期。此外,它并不总是正确添加。

IFERROR(SUM(VLOOKUP($D$1,'1.2.2015'!$A$5:$C$10,3)*'1.2.2015'!$C$5:$C$10*('1.2.2015'!$A$5:$A$10=$D$1)),0)

D1将填充兄弟会一词。

有没有更简单的方法来实现这一目标?并且有人可以告诉我为什么我的公式不能始终正常工作吗?

1 个答案:

答案 0 :(得分:1)

你可以使用SumIfs intead,我觉得更简单:
=SUMIFS(C1:C6,A1:A6,D1)

然后您可以使用此公式循环遍历所有工作表。使用方法
For each ws in worksheets ... next ws
注意:您可能需要检查工作表的名称,以免意外地计算您不想计算的工作表上的单元格。

我认为你必须确定每个工作表的最后一行。你可以用
intLastRow = ws.cells(ws.rows.count,3).end(xlUp).row
注意:假设我们添加的范围之下没有任何内容。

要计算总代价,请在代码中使用增量行 dblSumTotal = dblSumTotal + Application.WorksheetFunction.SumIfs(ws.range("C1:C" & intLastRow ), ws.range("A1:A" & intLastRow ) ,"Brotherhood")
注意:您可以使用单元格引用,而不是字符串“Brotherhood”