带有XOR条件的SUMIF数据对

时间:2016-02-26 12:55:19

标签: excel sumifs

我绞尽脑汁想要如何做到这一点,经过无数次试验使用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

2 个答案:

答案 0 :(得分:1)

我不相信完全可以使用公式和辅助列完成此操作。我提出了一个使用公式和一个辅助列的解决方案。

鉴于工作表设置如下......

enter image description here

...您需要执行以下操作:

  • 输入=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)并将辅助列放在该工作表上。在这种情况下,您需要执行以下操作:

  • 在工作表2,A2中输入=OR(COUNTIF(Sheet1!A$2:A$7,Sheet1!A2)=1,Sheet1!B2="Actual"))(将Sheet1替换为现有工作表的名称)
  • 复制公式以涵盖所有项目
  • 在C9中输入=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。