我有一个 Excel 工作簿,其中包含大约 300 万个行项目,其中要求我查找有多少笔交易(可以由其中几个行项目组成,并由唯一的交易 ID 指定/分组)至少有一个订单项被拒绝(状态代码“D”)并且该订单项的付款金额为 0。
令我困惑的部分是如何让 Excel 考虑事务 ID 并根据该分组给出结果。例如,如下表所示:
交易ID | 行项目 ID | 状态 | 付款金额 |
---|---|---|---|
123 | 1231 | A | 50 |
123 | 1232 | A | 75 |
123 | 1233 | A | 325 |
123 | 1234 | D | 0 |
123 | 1235 | D | 0 |
456 | 4561 | A | 25 |
456 | 4562 | A | 125 |
456 | 4563 | A | 450 |
456 | 4564 | A | 150 |
789 | 7891 | D | 0 |
789 | 7892 | D | 0 |
789 | 7893 | D | 0 |
789 | 7894 | A | 50 |
789 | 7895 | A | 75 |
789 | 7896 | A | 250 |
我正在尝试提出一个公式,该公式能够确定有 2 笔交易被拒绝(123 和 789)和 1 笔交易没有被拒绝(456)。最终我希望能够用它来计算拒绝交易的比率。
我一直在使用 COUNTIFS 公式来生成行项目级总计,到目前为止效果很好,但我不确定如何添加任何逻辑来分组或选择仅一列或类似的不同值。我能找到的最接近的是 1/COUNTIF 来查找唯一值的总数,但这并不是我所需要的。
我认为在 Excel 2010 中执行此操作的最简单方法是使用几个辅助列来简化公式,并在需要时更轻松地筛选数据。
Helper
列标识定义为“已拒绝”的行项目:
=IF(AND(C2="D", D2=0), 1, 0)
下一列根据上一列标识每笔交易至少有一个被拒绝的行项目:
=IF(SUMIFS($E$2:$E$1000, $A$2:$A$1000, A2) > 0, 1, 0)
最后是被拒绝交易的计数(如果使用数组公式计算):
=SUM(IF(FREQUENCY(IF(F2:F1000=1, MATCH(A2:A1000, A2:A1000, 0)), ROW(A2:A1000)-ROW(A2)+1), 1))