【问题标题】:sumifs to loop all sheetssumifs 循环所有工作表
【发布时间】:2016-05-18 18:24:09
【问题描述】:

我一直在搜索不同的论坛,但似乎找不到我的答案。 我有相当基本的 VBA 知识,并且我的大部分代码都是在线构建的!

不管单元格引用是什么,因为我可以在以后解决这些问题。 请你告诉我如何在多张纸上制作 sumifs 公式参考。 这正在构建到模板中,每次运行时都会有不同数量的具有不同名称的工作表,因此我将无法引用工作表。

抱歉,有点含糊 提前感谢

【问题讨论】:

  • 您可以使用Sheets(1) 或工作簿中的任何工作表编号参考。您可以做很多事情,但如果没有更多信息就很难说。
  • 查看此问题的答案,了解如何在公式中按编号引用工作表:stackoverflow.com/questions/19790985/…
  • 我基本上需要在单元格 B3 中的摘要表中执行 sumifs(B2006:B3005(在所有工作表中),其中 summaryA3 = 所有工作表 A2006:A3005 和摘要 B2 = 所有工作表 B2005)
  • 谢谢大卫,我不认为我可以使用它,因为工作簿可能有 3 张或 300 张,在第一个宏运行之前这是未知的,因此无法参考工作表编号,如果它运行了一次,然后再一次,它会创建新的工作表并删除旧的工作表编号,这就是我需要为工作簿中的所有工作表循环的主要原因!
  • 谷歌“3d SUMIFS”。它将展示如何为此使用公式。

标签: vba excel sumifs


【解决方案1】:

谢谢,所以对于其他需要这个的人,这就是它的全部完成方式 我原来的公式是

"=SUMPRODUCT(SUMIF(INDIRECT(" '"&Invoices&"'!"&"A2006:A3005"),A3,INDIRECT("'"&Invoices&"'!"&"B2006:B3005")))" 

这在直接放入单元格时有效,但如您所见,当将其添加到 VBA 时,它会将其作为注释读取。为了解决这个问题,每次使用“你需要添加额外的”,如下所示(除了公式开头的“=”之前和公式末尾的“之后)”)

 *****'list all the sheet names in cell AI1 of the sheet summary*****
For i = 1 To Sheets.Count
Sheets("Summary").Range("AI1")(i, 1).Value = Sheets(i).Name
Next i
***'clear the first 3 entries in AI as i didnt need the first three sheet names***
Sheets("Summary").Select
Sheets("Summary").Range("AI1:AI3").Clear
***'select the first sheet name, which is in AI4 as we cleard the first 3 to the last used cell, e.g Ctrl.Shift.down*** 
Sheets("Summary").Activate
Sheets("summary").Range(ActiveSheet.Range("AI4"),    ActiveSheet.Range("AI4").End(xlDown)).Select
***' Name the range invoices***
Selection.Name = "Invoices"
' ***Formula to do a sumIf looping all the shets in the named range Invoices***
Sheets("summary").Range("B3").Formula = "=SUMPRODUCT(SUMIF(INDIRECT(""'""&Invoices&""'!$A$2006:$A$3005""),$A3,INDIRECT(""'""&Invoices&""'!B$2006:B$3005"")))"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-15
    • 2021-11-28
    • 2020-05-21
    • 2018-03-08
    • 2012-10-02
    相关资源
    最近更新 更多