我在电子表格中有大约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将填充兄弟会一词。
有没有更简单的方法来实现这一目标?并且有人可以告诉我为什么我的公式不能始终正常工作吗?
答案 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”。