Excel 计算日期列表中事件的天数和持续时间

Excel 计算日期列表中事件的天数和持续时间,excel,excel-formula,Excel,Excel Formula,我有两列,一列是日期列表,另一列是持续时间列表。这些构成了不断添加到的查询日志的一部分,因此没有明确定义的范围 我想数一数星期一(等)的参赛人数,以及星期一(等)的总查询时间 我有一个粗略的计数解决方案,使用sumproduct和weekday,并仅定义范围,超出我预期的范围(我不能使用a:a,因为标题行很令人沮丧),但我根本无法理解第二部分。你是正确的,你可以使用sumproduct 假设您的表如下所示(表不是范围): 要计算星期一的持续时间,您可以使用: =SUMPRODUCT((WEEKD

我有两列,一列是日期列表,另一列是持续时间列表。这些构成了不断添加到的查询日志的一部分,因此没有明确定义的范围

我想数一数星期一(等)的参赛人数,以及星期一(等)的总查询时间


我有一个粗略的计数解决方案,使用sumproduct和weekday,并仅定义范围,超出我预期的范围(我不能使用a:a,因为标题行很令人沮丧),但我根本无法理解第二部分。

你是正确的,你可以使用
sumproduct

假设您的表如下所示(表不是范围):

要计算星期一的持续时间,您可以使用:

=SUMPRODUCT((WEEKDAY(Table1[Date],2)=1)*1)
=SUMPRODUCT((WEEKDAY(Table1[Date],2)=1)*(Table1[Duration]))

您可以使用
SUMPRODUCT
,这是正确的

假设您的表如下所示(表不是范围):

要计算星期一的持续时间,您可以使用:

=SUMPRODUCT((WEEKDAY(Table1[Date],2)=1)*1)
=SUMPRODUCT((WEEKDAY(Table1[Date],2)=1)*(Table1[Duration]))
使用
a$2:index(a:a,match(1e99,a:a))
定义日期范围

数一数星期一

=SUMPRODUCT(--(WEEKDAY(A$2:INDEX(A:A, MATCH(1E+99,A:A )))= 2))
要计算星期一的持续时间

=SUMPRODUCT(--(WEEKDAY(A$2:INDEX(A:A, MATCH(1E+99,A:A )))= 2), B$2:INDEX(B:B, MATCH(1E+99,A:A )))
例如:

或者,使用类似的公式定义命名的动态范围。

使用
a$2:index(a:a,match(1e99,a:a))
定义日期范围

数一数星期一

=SUMPRODUCT(--(WEEKDAY(A$2:INDEX(A:A, MATCH(1E+99,A:A )))= 2))
要计算星期一的持续时间

=SUMPRODUCT(--(WEEKDAY(A$2:INDEX(A:A, MATCH(1E+99,A:A )))= 2), B$2:INDEX(B:B, MATCH(1E+99,A:A )))
例如:


或者,使用类似的公式定义命名的动态范围。

我同意Gordon的建议,将其设置为一个动态列表(您只需选择范围并按Ctrl+t,就完成了-所有格式和公式都将自动扩展为新的数据行)

我不知道那张桌子有多大,但我的产品很快就变得很重

我建议:

  • 转换为表格:选择范围,按Ctrl+T,在弹出对话框中勾选“表格有标题”
  • 向表中添加一列,将工作日(表1[日期]作为公式(您可以将其格式化为“ddd”,以自定义格式显示为“Mon”等)
  • 在表旁边添加透视表,并按工作日透视
  • 与在单元格中一次性生成汇总相比,您可以更灵活地获取汇总。如果在表的底部添加行,公式将自身扩展,透视表的源范围也将扩展。您需要刷新透视表,但仅此而已


    我同意Gordon的建议,将其设置为一个动态列表(您只需选择range并按Ctrl+t,就完成了-您的所有格式和公式将自动扩展为新的数据行)

    我不知道那张桌子有多大,但我的产品很快就变得很重

    我建议:

  • 转换为表格:选择范围,按Ctrl+T,在弹出对话框中勾选“表格有标题”
  • 向表中添加一列,将工作日(表1[日期]作为公式(您可以将其格式化为“ddd”,以自定义格式显示为“Mon”等)
  • 在表旁边添加透视表,并按工作日透视
  • 与在单元格中一次性生成汇总相比,您可以更灵活地获取汇总。如果在表的底部添加行,公式将自身扩展,透视表的源范围也将扩展。您需要刷新透视表,但仅此而已


    将范围转换为表格,这样您就可以只引用表格列,例如
    Table1[标题名称]
    尝试使用format as table将当前表格转换/定义为excel表格中的数据。这不仅仅是为了使其看起来美观。您可以按给定标题引用列,例如=sum(Table1[销售])因此,无论您有100个销售条目还是10000个销售条目都可以。我还允许您在表格中创建一个公式列,该列将自动复制到每一新行。如果您仍然不确定我在说什么,请选择所有带有标题的数据,然后单击主菜单上的“表格格式”按钮,然后选择样式。无论标题行是什么,都不要在中使用:A。如果使用结构化表格路径,请参阅以获取更多信息。将范围转换为表格,以便只引用表格列,例如
    Table1[标题名称]
    尝试使用format as table将当前表格转换/定义为excel表格中的数据。这不仅仅是为了使其看起来美观。您可以通过给定标题引用列,例如=sum(表1[销售])因此,无论您有100个销售条目还是10000个销售条目都可以。我还允许您在表格中创建一个公式列,该列将自动复制到每一新行。如果您仍然不确定我在说什么,请选择所有带有标题的数据,然后单击主菜单上的“表格格式”按钮,然后选择样式。无论标题行是什么,都不要在中使用:A。如果您使用结构化表路径,请参阅以获取更多信息。这非常有用,非常感谢。1E+99是什么意思?1E+99是一个非常大的数字;字面上是1,后面跟着99个零。之所以使用它,是因为永远无法到达它。这样,返回最后一行的数字ber/date。如果要查找最后一个文本值,请使用
    “zzz”
    。谢谢,这真的很有用,并且允许我添加基于文本的其他标准。我现在可以按月份和来源统计查询,非常好。这很好,非常感谢。1E+99是什么意思?请问一下?
    1E+99
    是一个非常大的数字;字面上是1,后面跟着99个零。之所以使用它是因为永远无法达到它。这样,返回最后一行的数字/日期。如果要查找最后一个文本值,请使用
    “zzz”
    。谢谢,这非常有用,并允许我添加基于文本的其他条件。我现在可以按月份和来源统计查询,非常好。