excel - 根据日期阈值对重复项的最大值求和
问题描述
我有以下数据列:
Unique ID | Value | Date
1 | 20 | 15/10/2018
2 | 30 | 15/10/2018
1 | 40 | 16/10/2018
2 | 50 | 16/10/2018
然后我需要编写一个公式来根据日期阈值对 Value 列求和,但我只想包括每个唯一 ID 的最大值。
Date Threshold | Sum Formula
16/10/2018 | =SUMIF(C:C,"<="&F2,B:B)
显然,上面的公式将对所有值求和(140)。我只需要对每个唯一 ID (40+50=90) 小于或等于阈值日期的单个 MAX 值求和。
解决方案
步骤 1) 生成唯一的 ID 列表
创建唯一 ID 列表。有一些公式可以为您执行此操作,或者您可以输入它们。假设您的示例在 F2:F3 中编写 ID
步骤 2) 截止日期
将您的日期截止日期放在一个单元格中,比如说 E2。
步骤 3) 找到 MAX
我相信在 2016 年有一个 MAXIF 功能。使用它来根据唯一 ID 和 <= 截止日期提取最大值。MAXIF 是更好的公式,但不幸的是,我无法使用它,也无法指导您完成这里描述的更多内容。如果您没有 2016 年或访问 MAXIF,那么您可以使用聚合。聚合可以是执行类似数组操作的函数。因此,不要在其函数中使用完整的列引用,否则将进行过多的计算,这将使您的系统陷入困境或更糟。
=AGGREGATE(14,6,$B$2:$B$5/(($A$2:$A$5=$F2)*($C$2:$C$5<=$E$2)),1)
将该公式放入 G2 并在每个唯一 ID 旁边复制。然后它将在截止日期之前或等于截止日期之前提供该日期的最大值。
步骤 4) 对最大值求和
在未使用的列中,对上一个公式的结果求和
=SUM(G2:G3)
这假设您的第一个表是 A:C 列。它还假设您的日期采用 excel 序列日期格式,而不是伪装成 excel 日期的字符串。您可以使用=ISNUMBER(A1)
A1 是带有日期的单元格来测试后者。false 值表示它是一个字符串,需要转换。调整范围以适合您的数据。
推荐阅读
- r - 基于 R Shiny 仪表板中的单选按钮进行绘图
- reactjs - 为什么打字稿不显示错误?(反应)
- c++ - C++ Incorrect display of function parameters
- php - 将新行添加到数据库时回显
- three.js - three.js 有没有办法检测剪辑位置或何时基于缩放到达远剪辑?
- android - 颤振应用程序编译错误:位置参数太少:需要 1,给定 0。领先 = 图标按钮(
- google-apps-script - 在 Apps 脚本中获取完整的浏览器 URL
- three.js - 在three.js中实现冒名顶替者
- python - 如何通过 Selenium ActionChain 和 Python 点击元素
- python - 获取卷积算法失败。这可能是因为 cuDNN 初始化失败,