具有 XOR 条件的 SUMIF 数据对
SUMIF pairs of data with XOR conditional
我绞尽脑汁思考如何做到这一点,在使用 SUMIF、数组、SUMPRODUCT 进行了多次试验后,我无法找到任何解决方案,所以我希望有人能提供帮助。
鉴于下面的数据,我想在每个 "Week" 列的底部有一个总和,该总和是该周第一列中每个项目的值的总和。要注意的是,它应该只计算一次每个项目的价值,如果它们可用,则采用实际值或预测值(但绝不是两者)。如果两者都可用,则应使用实际值而不是预测值。
最后一行表示每列的正确总计以及我想要的计算公式。
请注意,由于 sheet 的结构,我需要在没有辅助列的情况下执行此操作,并且项目可能并不总是以正确的顺序添加(即它可能会变为实际、预测、实际、预测) 。此外,将有多达 50 个独特的项目,所以我真的需要一个适用于许多项目的更通用的公式。
Week1 Week2 Week3 Week4 Week5
Item1 Actual 500 0 100 0
Item2 Actual 400 100 0
Item1 Forecast 200 200 300 200
Item2 Forecast 100 0 100
900 100 100 0 300
我认为完全使用公式而不使用辅助列是不可能做到这一点的。我想出了一个使用公式和一个辅助列的解决方案。
假设 sheet 是这样设置的...
...您需要执行以下操作:
- 在 I2 中输入
=OR(COUNTIF(A:A,A2)=1,B2="Actual")
- 向下复制公式以覆盖所有项目
- 在C9中输入
=SUMIF($I2:$I7,TRUE,C2:C7)
- 将公式复制到右侧以覆盖所有周
I2中的公式统计了匹配当前项的项数。如果一共是或者一共是两个但是当前是"Actual",那么就放TRUE
,否则放FALSE
. (我在这里假设您每件商品只有一个 "Forecast" 和一个 "Actual"。如果不是这样,请告诉我。)
有了这个辅助列,SUMIF
公式就非常简单了——它只是将那一周的第 I 列中有 TRUE
的值相加。
单独工作的辅助专栏sheet
如果您绝对不能在 Sheet1(或您的 sheet 的任何名称)上放置辅助公式,您可以添加一个新的 sheet(Sheet2) 并将辅助列放在 sheet 上。在这种情况下,您需要执行以下操作:
- 将
=OR(COUNTIF(Sheet1!A:A,Sheet1!A2)=1,Sheet1!B2="Actual"))
输入Sheet2,A2(将Sheet1替换为您已有的sheet名称)
- 向下复制公式以覆盖所有项目
- 在 C9 中输入
=SUMIF(Sheet2!$A2:$A7,TRUE,C2:C7)
(将 Sheet2 替换为您的新 sheet 的名称)
- 将公式复制到右侧以覆盖所有周
这应该在没有辅助列的情况下完成。
=SUMPRODUCT((COUNTIFS($A:$A,$A:$A,C2:C5,"")+($B:$B="Actual")>0)*1,C2:C5)
用 ctrl+alt+enter 确认
这是第 1 周的公式,即单元格 C7。
我绞尽脑汁思考如何做到这一点,在使用 SUMIF、数组、SUMPRODUCT 进行了多次试验后,我无法找到任何解决方案,所以我希望有人能提供帮助。
鉴于下面的数据,我想在每个 "Week" 列的底部有一个总和,该总和是该周第一列中每个项目的值的总和。要注意的是,它应该只计算一次每个项目的价值,如果它们可用,则采用实际值或预测值(但绝不是两者)。如果两者都可用,则应使用实际值而不是预测值。
最后一行表示每列的正确总计以及我想要的计算公式。
请注意,由于 sheet 的结构,我需要在没有辅助列的情况下执行此操作,并且项目可能并不总是以正确的顺序添加(即它可能会变为实际、预测、实际、预测) 。此外,将有多达 50 个独特的项目,所以我真的需要一个适用于许多项目的更通用的公式。
Week1 Week2 Week3 Week4 Week5
Item1 Actual 500 0 100 0
Item2 Actual 400 100 0
Item1 Forecast 200 200 300 200
Item2 Forecast 100 0 100
900 100 100 0 300
我认为完全使用公式而不使用辅助列是不可能做到这一点的。我想出了一个使用公式和一个辅助列的解决方案。
假设 sheet 是这样设置的...
...您需要执行以下操作:
- 在 I2 中输入
=OR(COUNTIF(A:A,A2)=1,B2="Actual")
- 向下复制公式以覆盖所有项目
- 在C9中输入
=SUMIF($I2:$I7,TRUE,C2:C7)
- 将公式复制到右侧以覆盖所有周
I2中的公式统计了匹配当前项的项数。如果一共是或者一共是两个但是当前是"Actual",那么就放TRUE
,否则放FALSE
. (我在这里假设您每件商品只有一个 "Forecast" 和一个 "Actual"。如果不是这样,请告诉我。)
有了这个辅助列,SUMIF
公式就非常简单了——它只是将那一周的第 I 列中有 TRUE
的值相加。
单独工作的辅助专栏sheet
如果您绝对不能在 Sheet1(或您的 sheet 的任何名称)上放置辅助公式,您可以添加一个新的 sheet(Sheet2) 并将辅助列放在 sheet 上。在这种情况下,您需要执行以下操作:
- 将
=OR(COUNTIF(Sheet1!A:A,Sheet1!A2)=1,Sheet1!B2="Actual"))
输入Sheet2,A2(将Sheet1替换为您已有的sheet名称) - 向下复制公式以覆盖所有项目
- 在 C9 中输入
=SUMIF(Sheet2!$A2:$A7,TRUE,C2:C7)
(将 Sheet2 替换为您的新 sheet 的名称) - 将公式复制到右侧以覆盖所有周
这应该在没有辅助列的情况下完成。
=SUMPRODUCT((COUNTIFS($A:$A,$A:$A,C2:C5,"")+($B:$B="Actual")>0)*1,C2:C5)
用 ctrl+alt+enter 确认
这是第 1 周的公式,即单元格 C7。