Excel 2003 for DSUM的替代公式

问题描述 投票:0回答:1

我正在使用Excel 2003,并尝试查找各个标准的总数。我目前正在使用此公式,它正在成功运行。

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

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

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

关于如何在减少文件大小并提高文档速度的同时如何复制该公式的任何建议?我不希望使用数据透视表

formula excel-2003
1个回答
0
投票

替代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

被称为:finishUseActiveworkbook这将禁用对活动工作簿中所有工作表的计算。

上述方法不会通过更改工具中的自动/手动计算->选项来实现>

© www.soinside.com 2019 - 2024. All rights reserved.