如何计算仅减少或增加部分总和

How to calculate only decrease or increase part of the sum

提问人:Stephan_Rossi 提问时间:10/27/2023 最后编辑:IkeStephan_Rossi 更新时间:10/28/2023 访问量:82

问:

如何计算仅减少或增加部分总和? 例如:

编号 价值
1 2019 年 1 月 100
2 2019 年 1 月 120
3 2019 年 1 月 90
4 2019 年 1 月 60
1 2020 年 1 月 150
2 2020 年 1 月 90
3 2020 年 1 月 130
4 2020 年 1 月 40
增值 价值降低
90 50

当然,在真实数据文件中,有数千个不同的ID。

在数据透视表中尝试过公式:

=IF(FILTER(Value, Month = "January 2019") > FILTER(Value, Month = "January 2020"), FILTER(Value, Data = "January 2019")-FILTER(Value, Data = "January 2020"), FILTER(Value, Data = "January 2020")-FILTER(Value, Data = "January 2019"))

在数据透视表中移动变量。 我得到的最接近的是将 ID 放在行中,将日期放在列中,将日期放在“差异”日期中,但我无法删除正/负值。

Excel 公式 数据透视表

评论


答:

1赞 Scott Craner 10/28/2023 #1

使用 LET:

阳性:

=LET(
    ID,A2:A9,
    m,B2:B9,
    v,C2:C9,
    u,UNIQUE(ID),
    vl,BYROW(u,LAMBDA(z,SUMIFS(v,ID,z,m,"January 2020")-SUMIFS(v,ID,z,m,"January 2019"))),
    ABS(SUM(FILTER(vl,vl>0))))

阴性:

=LET(
    ID,A2:A9,
    m,B2:B9,
    v,C2:C9,
    u,UNIQUE(ID),
    vl,BYROW(u,LAMBDA(z,SUMIFS(v,ID,z,m,"January 2020")-SUMIFS(v,ID,z,m,"January 2019"))),
    ABS(SUM(FILTER(vl,vl<0))))

enter image description here

评论

1赞 Mayukh Bhattacharya 10/28/2023
先生,您只能从一个公式中返回值ABS(SUM(FILTER(vl,vl>0)))HSTACK(ABS(SUM(FILTER(vl,vl>0))),ABS(SUM(FILTER(vl,vl<0)))))
1赞 Scott Craner 10/28/2023
是的,如果他们愿意,我会让他们这样做。我想展示其中的区别。
2赞 P.b 10/28/2023 #2
=LET(i,A2:A9,m,B2:B9,v,C2:C9,
a,WRAPROWS(SORTBY(v,i,,m,),2),
     d,DROP(a,,1),
     t,TAKE(a,,1),
     VSTACK("Value "&{"In","De"}&"creased",
            HSTACK(SUM(IF(t<d,d-t,0)),
                   SUM(IF(t>d,d-t,0)))))

enter image description here

注意:此公式假定每个 ID 有两个值,一个用于旧年,一个用于新年。如果没有,则计算将关闭。

评论

1赞 Mayukh Bhattacharya 10/28/2023
啊,看起来我们也是以同样的方式思考的=)刚刚在Scott Sir的帖子中发表了评论WRAPCOLS()
1赞 Scott Craner 10/28/2023
这是否假设有 4 个唯一 ID?它是否假设它已排序?可能想解释一下公式中需要改变什么来处理Of Course in real data file there is thousands of different ID.
1赞 P.b 10/28/2023
我把它读成季度(每年 4 个),但对于这个评论,我怀疑这是一个好的假设。感谢您指出这一点。
1赞 P.b 10/28/2023
@ScottCraner,由于他正在比较 2 年,我将其从 wraprows 更改为 wrapcols(按 ID 排序,然后按月排序)。仅当所有 ID 都有 2 个值时,此解决方案才有效,否则会中断。
1赞 VBasic2008 10/28/2023 #3

拆分增加和减少

  • 这假定每个月/年都具有相同的 ID。
  • 不需要对数据进行排序(第一行按照屏幕截图中显示的方式对其进行排序:按 ID,然后按月)。
=LET(data,A2:C21,icol,1,mcol,2,vcol,3,
    ds,SORT(data,HSTACK(icol,mcol),1),
    m,CHOOSECOLS(ds,mcol),
    mu,UNIQUE(m),
    ms,DROP(mu,-1),
    me,DROP(mu,1),
    v,CHOOSECOLS(ds,vcol),
    dr,DROP(REDUCE("",SEQUENCE(ROWS(ms)),LAMBDA(rr,r,LET(
        vw,WRAPROWS(FILTER(v,(m=INDEX(ms,r))+(m=INDEX(me,r))),2),
        cs,CHOOSECOLS(vw,1)-CHOOSECOLS(vw,2),
    VSTACK(rr,HSTACK(SUM(IF(cs>0,cs,)),SUM(IF(cs<0,ABS(cs),))))))),1),
HSTACK(ms,me,dr))

enter image description here