我有一个大型 Excel 表格(591 列,2645 行),其基本格式如下所示:
| Time | Data 1 | Data 2 | Data 3 | Data 4 | Data 5 | Data 6 | Data 7 |
|======+========+========+========+========+========+========+========|
| 0.01 | 0.35 | | | | | 0.1351 | 0.2398 |
| 0.02 | | 0.42 | | | | 0.4314 | 0.4342 |
| 0.03 | | | 0.99 | | | 0.3414 | 0.4321 |
| 0.04 | | | | 0.12 | | 0.4351 | 0.4256 |
| 0.05 | | | | | 0.66 | 0.7894 | 0.9874 |
这基本上是数据流的记录,其中某些字段每个时间步仅采样一次,而其他字段则在每个单独的时间步上采样。一旦循环完成(即,再次写入“数据1”),则整个“记录”被记录。
出于数据处理和分析的目的,最终的数据记录如下所示:
| Time | Data 1 | Data 2 | Data 3 | Data 4 | Data 5 | Data 6 | Data 7 |
|======+========+========+========+========+========+========+========|
| 0.05 | 0.35 | 0.42 | 0.99 | 0.12 | 0.66 | 0.7894 | 0.9874 |
请注意,时间戳等于在表中找到的时间戳,重复数据字段等于当时的数据值,周期性数据字段等于每个字段的最后报告值。
单个循环的记录基本上由给定时间范围内为任何字段记录的最终值组成。我可以通过其中的一个步骤轻松完成此操作,但我有 2600 多行数据要处理每个数据集和六个数据集要处理。
是否有一种干净/简单/实用的方法可以在整个数据文件中执行此操作?我可以通过多种方式强制执行此操作,但我希望不必重新发明轮子。如果我可以将输出写入新的工作表,那就太好了。
最佳答案
欢迎来到 SO。
我有一个基于长度为 5 的循环的小解决方案。它使用 indirect
函数,您应该能够根据需要扩展它。
首先,我在您的示例中添加了一些行,以达到 0.15 的时间。这占用了 a1 到 h16。然后我将 i17 添加到 j19,以告诉要检查哪些行。我做了这些:
2 6
7 11
12 16
这意味着 i17 和 j17 表示第 2 行到第 6 行(或数据中的第 1 行)。我建议你让 j17 = i17+4 和 j18=i17+1。
好的,间接函数来了。
在 a17 中,
=INDIRECT("A"&$J17)
,这意味着,给我列 A,第 2 行(因为单元格 i17 中有一个 2。$
表示使用绝对列,并在公式中继续使用 I)。在 b17 中,
=SUM(INDIRECT("b"&$I17&":b"&"$"&$J17))
,表示 b2 到 b6 的总和。在 c17 中,
=SUM(INDIRECT("c"&$I17&":c"&"$"&$J17))
。对 d17、e17 和 f17 重复该模式。
在 g17 中,您只想使用
=INDIRECT("g"&$J17)
复制 g6 中的内容。在 h17 中,您使用
=INDIRECT("h"&$J17)
复制 h6 中的内容。然后,您可以将 a17:h17 中的公式向下复制三行。
关于excel - 如何在 Excel 2007 中将多行折叠为一行?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10235214/