【问题标题】:Count based on calculation with no absolute range using excel使用 excel 计算基于没有绝对范围的计算
【发布时间】:2013-06-19 12:55:59
【问题描述】:

我有一个连接到 txt 文件的 Excel 工作表,具有自动刷新功能。我设法将数据放入工作表中。下面是两行的示例:

1367945797  0,000   MainThread  ---
1367945798  0,709   MainThread  200

第一列包含一个 unix 时间戳,Excel 无法将其理解为日期/时间信息。我知道我可以使用以下公式转换时间戳:

=(((A1/60)/60)/24)+DATE(1970;1;1)

第二列包含以毫秒为单位的响应时间。

目标:
我要统计时间所在的行数:

Hour(formula_above) equals 16

,并计算这一小时的平均响应时间

我正在尝试创建一个图表,显示一天中每小时(1-24 小时)的平均响应时间。

请务必注意,我没有绝对范围,因为新数据正在进入我的数据表中。

我尝试使用 CountIF() 但它看起来不能计算,并将计算的值用作 if 语句。

还有其他方法可以解决这个问题吗?

是否有一个简单的函数可以遍历范围(例如:Sheet1!A:A)并在每次迭代中给我值,我可以在每次迭代中返回一个值/布尔值,并使用 countif 或其他公式来做一些神奇的东西?

【问题讨论】:

  • 你可以使用数据透视表吗?
  • 我认为您可以使用array formula

标签: excel excel-formula excel-2010


【解决方案1】:

如果您的原始时间戳在 A 列中,您可以使用此数组公式根据 A 列的第 16 小时对 B 列进行平均

=AVERAGE(IF(HOUR(A:A/86400)=16;B:B))

CTRL+SHIFT+ENTER

确认

或者您可以使用辅助列来拉出小时,例如在C2复制下来

=HOUR(A2/86400)

那么你可以像这样使用AVERAGEIF

=AVERAGEIF(C:C;16;B:B)

【讨论】:

  • 这似乎可以解决问题,巴里。但是当我尝试添加 AND 运算符时,我只得到 0 (0.00000000000)。我知道一行在 B 列中包含 15,在 E 列中包含字符串“search”,并且值大于 0。 =AVERAGE(IF(AND(Data!B:B=15;Data!E: E="搜索");数据!C:C))
  • 我还需要补充一点,我现在可以直接在我的文件中获取 Hour 值。这就是我不再计算的原因。
  • 您不能以这种方式使用 AND,对于数组公式,您需要 =AVERAGE(IF((Data!B:B=15)*(Data!E:E="search");Data!C:C)) 但 AVERAGEIFS 更好,即 =AVERAGEIFS(Data!C:C;Data!B:B;15;Data!E:E;"search")
  • 值得注意的是,如果你想得到今天的日期,你的 /86400 是错误的。您必须添加从 01.01.1970 开始的日期。仅供参考,如果有人想知道
  • @smarty ......但我建议的公式只是提取当天的HOUR,添加天数不会改变,所以没有必要......例如=HOUR(x/86400) 总是等于 HOUR(x/86400+y) 如果 y 是整数(并且 excel 中的日期是整数)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多