【问题标题】:Extract data for a particular time-interval from a set of continous readings从一组连续读数中提取特定时间间隔的数据
【发布时间】:2019-09-14 13:22:00
【问题描述】:

我正在寻找替代方法来提取特定年份中特定月份的数据,准确地说是风速。 从 2004 年到 2019 年,我每隔 10 分钟阅读一次。

例如,我想提取 2008 年 2 月的所有值。

这就是它的样子

Timestamp           Speed (m/s)
01.01.2004 00:00    0
01.01.2004 00:10    8,11
01.01.2004 00:20    8,09
01.01.2004 00:30    8,27

我目前所做的是,使用 MATCH、ADDRESS 和 INDIRECT 的组合来获取每个月第一次和最后一次阅读的时间戳。

然后我会在数组函数中使用这些

WINDATEN - 是包含所有读数的工作表

2008             Start                     End
                 01.02.2008 00:00          29.02.2008 23:50
=MATCH()         214850                    219025
=ADDRESS()      'WINDATEN'!$B$214850       'WINDATEN'!$B$219025 
=INDIRECT()      21,36                      21.87

我想知道是否有更优雅的方式来实现我想要的?而不是整个 ADDRESS 和 INDIRECT 业务。

【问题讨论】:

  • INDEX(MATCH(… 将为您提供这些值,而不会出现易失性问题(这可能是INDIRECT 的问题,具体取决于您的工作表的复杂性)。如果您的时间戳位于数据的最左侧列中,VLOOKUP 也可以工作。
  • 另外,根据您要对这些数据执行的操作,可能不需要返回位置的ADDRESS。例如,要获得每月平均值,您只需使用AVERAGEIFS。要创建直方图,您可能只使用过滤器,也许使用数据透视图。等等。
  • 非常感谢,这超出了我的理解,为什么我没有想到使用简单的 INDEX MATCH 东西!,它适用于基于数组的 FREQUENCY 公式以及 COUNTIFS(我用它来计算频率与)

标签: excel excel-formula


【解决方案1】:

假设您想要获取特定日期中一段时间​​内的平均风速。您仍然可以使用 Match 来获取第一行和最后一行,但然后使用以下方法获取 Index 以生成值数组:

=AVERAGE(INDEX(B:B,MATCH(C2,A:A,0)):INDEX(B:B,MATCH(D2,A:A,0)))

使用CtrlShiftEnter

作为数组公式输入

【讨论】:

  • 首先,谢谢。但是,我不需要平均平均速度,只需要获取“端点”或第一行和最后一行的替代方法。我是一个 Excel 新手。我想使用它们,比如在 FREQUENCY() 公式中生成直方图或类似的东西:) 我有点 Excel 新手,我热衷于探索不同的选项
  • 我已经意识到无论如何我都在房子周围转了一圈以获得两个时间戳之间的数组 - 已经替换了原始公式。是的,正如@Ron Rosenfeld 所说,使用索引/匹配、Vlookup 甚至老式查找要容易得多。我不太明白您将如何在直方图中使用起点和终点……也许还有另一个问题要解决?
  • 我使用起点和终点来提取一个包含大约 4000 个值的数组。然后我使用 COUNTIFS 来计算这些值的频率,这些值对应于 0.5 m/s 的 Bin 大小占总数的百分比。所以 X 轴上的 Bins 和 Y 轴上的频率
猜你喜欢
  • 1970-01-01
  • 2022-10-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-01
  • 1970-01-01
  • 2020-09-20
相关资源
最近更新 更多