我绞尽脑汁想要如何做到这一点,经过无数次试验使用SUMIF,阵列,SUMPRODUCT,我无法接近任何解决方案,所以我希望有人可以提供协助。
鉴于下面的数据,我希望在每个“周”列的底部有一笔总和,它总计了该周第一列中每个项目的值。问题是它应该只计算每个项目的价值,如果它们可用(但从不两者),则采用实际或预测。如果两者都可用,则应在预测数字上使用“实际”。
最下面的一行表示每列的正确总数,以及我希望得到的公式计算得出的结果。
请注意,由于工作表的结构,我需要在没有辅助列的情况下执行此操作,并且可能无法始终按正确的顺序添加项目(即可以实际,预测,实际,预测)。此外,将有多达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
答案 0 :(得分:1)
我不相信完全可以使用公式和辅助列完成此操作。我提出了一个使用公式和一个辅助列的解决方案。
鉴于工作表设置如下......
...您需要执行以下操作:
=OR(COUNTIF(A$2:A$7,A2)=1,B2="Actual")
进入I2 =SUMIF($I2:$I7,TRUE,C2:C7)
输入C9 I2中的公式计算与当前项目匹配的项目数。如果总共有一个或,则总共有两个但当前的一个是“实际”,那么它会放置TRUE
,否则它会放置FALSE
。 (我假设你每个项目只有一个“预测”和一个“实际”。如果不是这样,请告诉我。)
使用此辅助列,SUMIF
公式非常简单 - 它只是将第一列中TRUE
的值加起来。
单独工作表上的帮助列
如果您绝对无法在Sheet1上放置辅助公式(或者您的工作表的名称是什么),则可以添加新工作表(Sheet2)并将辅助列放在该工作表上。在这种情况下,您需要执行以下操作:
=OR(COUNTIF(Sheet1!A$2:A$7,Sheet1!A2)=1,Sheet1!B2="Actual"))
(将Sheet1替换为现有工作表的名称)=SUMIF(Sheet2!$A2:$A7,TRUE,C2:C7)
(将Sheet2替换为新工作表的名称)答案 1 :(得分:1)
这应该没有辅助列。
void swap(struct list *head, int v){
int temporary_number;
struct list *found=NULL;
if(head==NULL){
printf("%s", "Case of empty list !\n");
}
found = head;
while(found->next != NULL){
if (found->value == v){
temporary_value = found->next->value
found->next->value = found->value
found->value = temporary_value
}
found = found->next
}
return;
}
使用ctrl + alt +确认输入
这是第1周的公式,即细胞C7。