我有一个包含 30 个或更多工作表的工作簿。具体来说,每个工作表可能都是发票、变更单等,因此每个工作表的格式都与下一个工作表不同。
命名范围全部的每个工作表上的 可能指该工作表上的一个或多个随机单元格。在最后一张工作表上,我希望一个单元格显示名为全部的。
工作表数量可能有所不同。我不想使用数据透视表。
这可能吗?
附录:以下公式将返回属于任何名称的所有单元格的总数“全部的“,但我想自动执行此操作,这样我就不必手动添加所有工作表名称。名称全部的可能指每个工作表上的一个单元格或任何单元格集合。在实际使用中,工作表名称可以是任何随机名称。因此,我正在寻找可以查看每个工作表的代码,以及工作表是否包含名称全部的然后它附加+SUM(工作表名称!(总计)到方程。和函数是必需的,这样如果命名范围 Total 中每个工作表有两个或多个单元格,那么它们将包含在 GrandTotal 中。 =SUM(工作表 1!总计)+SUM(工作表 2!总计)+SUM(工作表 3!总计)+SUM(工作表 4!总计)
另一个例子:下面说明了为什么我认为可以只用一个步骤就能完成我想要做的事情。 公式=GET.CELL(48,INDIRECT("rc",0)) 创建一个实时动态命名范围“公式”,其中包含工作簿中包含公式的每个单元格。然后,您可以有条件地格式化所有单元格,以便在单元格包含公式时具有阴影背景。
因此,我正在寻找类似的功能:GrandTotal=SUM(GET.CELL("总计",INDERECT("rc",0)) 在哪里全部的指属于名为全部的。
答案1
您可以在汇总表中为每张发票写 2 列,并写下工作表的名称
发票合计
表1工作表2
工作表7
如果 sheet1 在 A2 中,则在第二列中:
=INDIRECT(A2&"!"&"total")
您将获得发票总价值,然后可以将其添加到总计中
答案2
这是一个老问题,但也许它能帮助有同样问题的人。我遇到了同样的问题,并为此编写了一个函数:
Public Function SumNamedRanges(nm As String) As Double
Dim sh As Worksheet
Dim test As Range
For Each sh In Sheets
' check if the named range exists
On Error Resume Next
Set test = sh.Range(nm)
If Err.Number = 0 Then
On Error GoTo 0
' sum the ranges
SumNamedRanges = SumNamedRanges + _
Application.WorksheetFunction.Sum(test)
Else
On Error GoTo 0
End If
Next
End Function
但该函数不会重新计算自身