【问题标题】:Excel formula: To sum the same cell values from multiple sheets with names as datesExcel公式:将多个工作表中的相同单元格值相加,名称为日期
【发布时间】:2020-10-23 03:39:36
【问题描述】:

有没有办法将每个标签名称为日期的多个工作表(选项卡)的同一单元格的所有值求和,并在 MasterSheet 中显示求和值?

例如:

目前,我在“Oct-2020”单元格下的单元格中使用这个公式=SUM(INDIRECT("'*-"&MONTH(C2)&"-2020'!$E$3")),如下图所示,11 月 20 日和 12 月 20 日我也会这样做。

如您所见,我得到了这个“#REF!”错误。目前,我有两个选项卡,我试图从“13-10-2020”和“14-10-2020”获取“$E$3”单元格值。但是,如果我只有一张纸(比如说“2020 年 14 月 10 日”),我就能获得价值。

有人知道我的公式是怎么回事吗?为什么只有一张表(选项卡)可以读取,但在有多个表(选项卡)时不起作用,即使我使用“*”来包含所有日期。

请指教。提前谢谢你

【问题讨论】:

    标签: excel cell


    【解决方案1】:

    我认为这应该可以解决您的问题:

    Option Explicit
    
    Sub sub_sum_up_months()
        Dim wks As Worksheet
        Dim nr_month As Integer, nr_year As Integer
        Dim str_month As String, str_year As String
        Dim c As Integer
        Dim my_Sum As Double
    
        For c = 3 To 5 ' Iterating over the columns "C" to "E"
            my_Sum = 0
        
            nr_month = month(Worksheets("MasterSheet").Cells(2, c).Value)
            If nr_month < 10 Then
                str_month = "0" & nr_month
            Else
                str_month = CStr(nr_month)
            End If
            
            nr_year = Year(Worksheets("MasterSheet").Cells(2, c).Value)
            str_year = CStr(nr_year)
            
            For Each wks In ThisWorkbook.Worksheets
                If Right(wks.Name, 4) = str_year And Left(Right(wks.Name, 7), 2) = str_month Then
                    my_Sum = my_Sum + wks.Cells(3, 5) 'cells(3,5) is "E3"
                End If
            Next wks
            Worksheets("MasterSheet").Cells(3, c).Value = my_Sum
        Next c
    End Sub
    

    【讨论】:

      【解决方案2】:

      您可以使用 sum 函数。
      按照这个一步一步来,它会起作用的。

      在您的 MasterSheet C3 中输入 =Sum(
      单击工作表 13-10-2020 和单元格 E3。
      现在按住shift。 单击最后一张是 10 月,然后按 Enter。

      现在您应该得到 10 月表中所有 E3 的总和。

      据我所知,没有公式可以动态执行此操作,但我很确定如果工作表名称遵循某种模式,则可以在 VBA 中完成。

      【讨论】:

      • 安德烈亚斯,谢谢你的建议。是的,你是对的,我的要求是非常动态的,因为我制作了一个按钮(问题中没有显示),它将生成一个新的工作表,每次按下它,一天,一张。所以两天后,我再次按下按钮,我将得到一张名为“15-10-2020”的工作表。除了使用您的方法之外,公式没有办法实现我想要的吗?谢谢!
      • 我对此表示怀疑。我相信您需要使用 VBA 来解决这个问题。那么一年内这本工作簿会有 366 张纸吗?在那种情况下,我相信执行此操作的 VBA 代码会相当慢。
      • 嗨,安德烈亚斯,是的,一年内将是 366 张。我会看看是否能找到任何 VBA 解决方案来解决我的问题。谢谢!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-04-24
      • 1970-01-01
      • 1970-01-01
      • 2021-06-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多