有条件地累积行

有条件地累积行

我有以下表格数据

2020-01-01 | yes | 5
2020-01-01 | no  | 3
2020-01-02 | no  | 2
2020-01-03 | yes | 7
2020-01-10 | no  | 4
2020-01-11 | yes | 9
2020-01-12 | yes | 22

我想从中创建一个新的“折叠”或“累积”表。

输出应如下所示

           - 2020-01-01 | 5   //5
2020-01-01 - 2020-01-03 | 12  //3+2+7
2020-01-03 - 2020-01-11 | 13  //4+9
2020-01-11 - 2020-01-12 | 22  //22

我基本上想将所有带有 的行的值添加no到下一行带有 的行yes。并将这些累积行之间的时间范围添加yes为第一列。

我对电子表格计算不太熟悉。这可以实现吗?如果可以,该怎么做?

我希望有一个可以在自由办公计算中运行的解决方案,但我也可以访问微软 Excel。

答案1

这是一个可能的解决方案(使用 Excel):

  • 从 A1:C8 中的基本数据开始
    原始数据
  • 添加 4 列:一列用于控制何时进行小计,一列用于开始日期,一列用于结束日期,一列用于实际小计本身,使用所示的公式((抱歉,刚刚注意到我使用了 y/n 而不是 yes/no,您必须适当调整公式):

公式定义

  • 选择表格中的某个单元格,点击“小计”按钮(在数据功能区,“大纲”部分)
  • 在 Subtotal 对话框中,将其设置为 At Each Change in ST_Level、Use Function Max、Add Subtotal To StartDate、EndDate、Subtotal;单击 OK。
    如何填写小计对话框
  • 使用左侧出现的“分组”控件将结果表折叠至第 2 级。
    最后结果

这样您就可以获得所需的确切数据,以及额外的“最大”行和一些空白列。如果您想将其精简为所需的确切数据,则可以:

  • 选择所有相关数据单元格(不包括“Grand Max”行)
  • 按 F5
  • 点击“特殊...”
  • 选择“仅可见单元格”
  • 单击“确定”
  • Ctrl-C 复制选定的单元格
  • 将其粘贴到新工作表中
  • 按您的喜好格式化结果。
    在此处输入图片描述

相关内容