【问题标题】:Alternative formula in Excel 2003 for DSUMExcel 2003 中 DSUM 的替代公式
【发布时间】:2012-07-26 16:09:53
【问题描述】:

我正在使用 Excel 2003 并试图找到单个标准的总数。我目前正在使用这个公式,并且效果很好。

Data A1:G1776 是数据库--- 数据 C1 - 是包含我想要总计的列 --- 和 F4:F5 是一列,我在其中设置了要匹配的行的条件。

=DSUM(DATA!$A$1:$G$17996,DATA!$C$1,$F$4:F5)

我遇到的问题是文件大小超过 5MB,当您尝试将其通过电子邮件发送给其他人时,这是巨大的。

有什么建议可以复制该公式,同时减小文件大小并提高文档速度吗?我不想使用数据透视表

【问题讨论】:

    标签: formula excel-2003


    【解决方案1】:

    DSUM 的替代品,您可以使用 sumproduct 公式:

    =SUMPRODUCT((DATA!$C$2:$C$17996)*(DATA!$A$2:$A$17996="Boys")*(DATA!$B$2:$B17996>18))
    

    上面的示例总共创建了 C 列,其中仅包括以下行:A 列是“男孩,B 列大于 18。 该示例假定第 1 行是标题行。

    为了加快计算速度,您可以使用 VBA 来启用单个工作表的计算。

    用于启用计算的 VBA:

    Public Sub enableCalc(ParamArray sheetsInUse())
      Dim i As Integer
      For i = 0 To UBound(sheetsInUse) Step 1
          sheetsInUse(i).EnableCalculation = True
      Next i
    End Sub
    

    调用使用:enableCalc activeworkbook.Worksheets("Sheet1") 这将在活动工作簿中启用计算 Sheet1

    VBA 用于禁用工作簿中所有工作表的计算:

    Public Sub finishedUse(wrkbook As Workbook)
    Dim i As Integer
    Dim wrkSheet As Worksheet
    For Each wrkSheet In wrkbook.Worksheets
    wrkSheet.EnableCalculation = False
    Next wrkSheet
    End Sub
    

    调用使用:finishedUse activeworkbook 这将禁用对活动工作簿中所有工作表的计算。

    上述方法不受工具中自动/手动计算的影响 --> 选项

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多