我正在使用 Excel 2003 并试图找到单个标准的总数。我目前正在使用这个公式,它运行成功。
数据 A1:G1776 是数据库 --- 数据 C1 - 是包含我想要总计的列 --- 而 F4:F5 是我为要匹配的行设置条件的列。
=DSUM(数据!$A$1:$G$17996,数据!$C$1,$F$4:F5)
我遇到的问题是文件大小超过 5MB,当您尝试将其通过电子邮件发送给其他人时,这是巨大的。
有什么建议可以复制该公式,同时减小文件大小并提高文档速度?我不想使用数据透视表
我正在使用 Excel 2003 并试图找到单个标准的总数。我目前正在使用这个公式,它运行成功。
数据 A1:G1776 是数据库 --- 数据 C1 - 是包含我想要总计的列 --- 而 F4:F5 是我为要匹配的行设置条件的列。
=DSUM(数据!$A$1:$G$17996,数据!$C$1,$F$4:F5)
我遇到的问题是文件大小超过 5MB,当您尝试将其通过电子邮件发送给其他人时,这是巨大的。
有什么建议可以复制该公式,同时减小文件大小并提高文档速度?我不想使用数据透视表
作为 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 这将禁用活动工作簿中所有工作表的计算。
上述方法不受更改工具中的自动/手动计算的影响 --> 选项