excel每隔一列求和,直到某个月

excel每隔一列求和,直到某个月,excel,excel-formula,Excel,Excel Formula,我有一个简单的电子表格,有两行: 实际1月|预算1月|实际EB |预算EB |实际马尔|预算马尔…… 100200 300 400 500 600 我只想对截至当前月份(月份(今天())的预算列求和。 实际列也是如此 所以如果我们现在在二月, 迄今为止的预算为:600=200+400 到目前为止的实际值为:400=100+300 我似乎无法做到这一点,至少不能简单而优雅地做到这一点。我建议您以不同的方式构建数据。如果您将所有内容垂直排列,并将数据分为三列,这将是一项更容易的任务。第一列是类别,其

我有一个简单的电子表格,有两行:

实际1月|预算1月|实际EB |预算EB |实际马尔|预算马尔……
100200 300 400 500 600

我只想对截至当前月份(月份(今天())的预算列求和。
实际列也是如此

所以如果我们现在在二月,
迄今为止的预算为:600=200+400
到目前为止的实际值为:400=100+300


我似乎无法做到这一点,至少不能简单而优雅地做到这一点。

我建议您以不同的方式构建数据。如果您将所有内容垂直排列,并将数据分为三列,这将是一项更容易的任务。第一列是类别,其中将填充“预算”或“实际”下一列是Month。在这之后,当然有列。然后,使用一个基本的SUMIF,比如“=SUMIF(A1:A6,“Budget”,C1:C6)。”A1:A6是Excel将扫描所需变量的范围。在这种情况下,该变量是“Budget”。然后,C1:C6是对应于“Budget”的值该公式将为您提供您想要的答案,只要您将SUMIF公式扩展到包括所有值,例如,“SUMIF(A1:A317,“预算”,C1:C317)。”

这是一个非数组公式,执行类似数组的操作。因此,应避免如此大范围的引用,否则您的系统将减速或可能崩溃。对于定义的小范围,只要公式不重复太多次,效果就很好

此外,TODAY()是一个volitile函数,这意味着当电子表格中的任何内容发生更改时,公式将重新计算,而不仅仅是当与公式相关的内容发生更改时

这个公式有一点通用化,所以您的数据可以位于工作表上的任何位置,并且不需要重新排列数据

要获得实际金额,请使用以下公式:

=SUMPRODUCT($C$4:$H$4*(COLUMN($C$4:$H$4)-COLUMN($C$4)+1<=MONTH(TODAY())*2)*(LEFT($C$3:$H$3)="A"))
=SUMPRODUCT($C$4:$H$4*(COLUMN($C$4:$H$4)-COLUMN($C$4)+1<=MONTH(TODAY())*2)*(LEFT($C$3:$H$3)="B"))

=SUMPRODUCT($C$4:$H$4*(列($C$4:$H$4)-列($C$4)+1因此我想我理解您的意图,没有电子表格的其余部分,我无法得出完整的公式,但目前这是可行的:

对于实际:

=IF(MONTH(TODAY())=1,A2,IF(MONTH(TODAY())=2,A2+C2,IF(MONTH(TODAY())=3,A2+C2+E2,"")))
预算:

=IF(MONTH(TODAY())=1,B2,IF(MONTH(TODAY())=2,B2+D2,IF(MONTH(TODAY())=3,B2+D2+F2,"")))
以下是我为测试而创建的电子表格:

如果你给我剩下的数据,我可以完成这个公式,基本上你所需要做的就是在公式中添加更多的月份,并改变它添加的数量


我相信可能有更有效的方法来实现这一点,但这种方法有效。

我建议使用隐藏行来控制日期。例如,1月在C列中,输入[C1]=1,[D1]=C1,[E1]=C1+1,[F1]=E1。选择E1:F1并复制到右侧,直到12月。隐藏行1

在第2行中,使用这两个公式

[C2]=“实际”和上限(文本(“1/”&C$1,“mmm”))

[D2]=“预算”和上限(文本(“1/”&D$1,“mmm”))

选择C2:D2并向右复制到12月。此练习不是必需的,因为结果显示与您已有的完全相同。但是,借助公式生成此结果可确保不会出错,而且速度更快。此外,您还可以目视检查隐藏行中的内容

现在,您可以使用此公式从第3行中提取总计,其中有您的值


=SUMIFS($C3:$Z3,$C$2:$Z$2,“预算*”,$C$1:$Z$1,"你希望预算表上的日期在哪里?你的数据会在今年剩下的时间里显示吗?@Ziggus不确定这是否是针对我的,但知道在这种情况下是否有更具体的日期信息似乎很重要。Tigele和@Ziggus我相信这是针对一般性问题的评论。谢谢你转发Ed。这很有效很好,但是我很难找出原因。具体来说,数组是如何在中间的(列4美元:4美元)-列($C$ 4)。+1它假设月份是按时间顺序排列的。因此,第1列和第2列是第一个月,第3列和第4列是第二个月。由于您是按2计数的,因此您需要将今天的实际月份乘以2。然后只需确保您的列数小于或等于当前月份
列(c4)+1
part只是一种确保你从1开始计算你正在使用的列的方法。我现在看到它是如何工作的。我必须使用“求值公式”逐步执行它,以了解{1,1,0,0,0,0,0,0,0,0,0,0}的矩阵是如何创建适当的掩码来相乘,然后对列求和的。我已经阅读了今天的()函数被认为是“不稳定的”,因为每次在电子表格中的任何位置进行更改时,它都会重新计算,这可能会导致稳定性问题。我在上面的公式中使用它,大约有100行。我最好计算今天的值()一次,将结果值放入单元格,然后在公式中引用该单元格?