问题描述
表1
ID/Month | May | June | July | August | September | October
ID101 | 30 | 50 | 50 | 80 | 20 | 60
ID201 | 20 | 30 | 10 | 40 | 30 | 50
ID101 | 10 | 50 | 60 | 80 | 70 | 20
ID301 | 20 | 80 | 70 | 40 | 40 | 70
ID101 | 30 | 70 | 80 | 50 | 90 | 50
ID301 | 80 | 20 | 30 | 20 | 60 | 20
表2
ID | Date | Value
ID101 | July | ?
ID201 | September | ?
ID301 | June | ?
?如果ID匹配且日期行小于或等于表2中指定的日期,则为表1中值的总和。
所以
- 对于
ID101 | July | ?
,我需要在表1和5月/ 6月/ 7月列中找到ID101
行中的值之和 - 对于
ID201 | September | ?
,我需要在表1和5月/ 6月/ 7月/ 8月/ 9月列的ID201
行中找到值的总和
如何做类似索引匹配表之类的求和运算,可以在其中查找列(ID)和行(小于或等于日期)的条件
解决方法
您需要做三件事:
- 取消数据表的旋转(从“宽”到“长”),以使每个值都在其自己的行中,由ID和Month标识(这有点棘手)
- 为您的月份提供一个数值(MONTH()函数派上用场)
- 使用SUMIFS检查ID列和Month列。
这是一个有效的示例:Google Sheets link
,您可以使用SUMPRODUCT
函数:
=SUMPRODUCT((J2=$A$2:$A$7)*(MONTH(K2&1)>=MONTH($B$1:$G$1&1))*$B$2:$G$7)
要使用MONTH(K2&1)
公式将月份名称转换为正确的数字,您必须在电子表格设置中指定United States
区域设置