列方向区间筛选并聚合

Excel表格的列由按顺序排列的月份组成,月份是日期反显而成,比如Jan实际是1/1/2023


A B C D
1
2
Jan Feb Mar
3 Sales 10000 15000 20000
4 COGS 5000 7500 10000
5 Expenses 2000 2000 2000
6 Net Profit 3000 5500 8000

现在要根据G1H1里的月份参数,对这两个起止区间内的数据进行求和。

F G H I
Start Month Jan End Month Feb

Sales 25000
COGS 12500
Expenses 4000
Net Profit 8500

使用 SPL XLL


=spl("=p=(d=?1)(1).pselect@a(between(E(~),E(?2):E(?3))),d.to(2,).(~(p).sum())",B2:D6,G1,I1)

Picture1png

函数 pselect 可获取符合条件的成员的位置。(N)表示第 N 个成员,N 是整数序列时表示相应位置上的多个成员。to(2,) 表示取第 2 到最末的成员,~ 表示当前成员。
来源:https://stackoverflow.com/questions/78163830/excel-sumifs-with-dynamic-columns