如何在Excel中基于日期与产品两列查找并返回求和至新表?
解决Excel多条件求和问题:替代LOOKUP的最优方案
你的数据情况
原始数据表(Sheet1)
| Date | Product | Sales_in_Units | Sales USD |
|---|---|---|---|
| 1/1/2016 | BM-D4 | 928 | 4,649 |
| 1/1/2016 | BM-XN | 266 | 685,740 |
| 1/2/2016 | BM-B10 | 910 | 1,144 |
| 1/2/2016 | PIB-H20 | 746 | 2,580,000 |
| 1/2/2016 | PIB-H20 | 143 | 3,768,734 |
| 1/3/2016 | VQR-GG2 | 269 | 570,794 |
| 1/3/2016 | WS2-B18 | 106 | 432,400 |
| 1/4/2016 | VQR-GG2 | 345 | 145,692 |
| 1/4/2016 | BM-D4 | 234 | 747,541 |
| 1/5/2016 | VQR-GG2 | 456 | 1,218 |
| 1/6/2016 | PIB-H20 | 14 | 260,000 |
| …… | …… | …… | …… |
目标汇总表(Sheet2)
| Date | Product | Total_Sales_in_Units | Total_Sales USD |
|---|---|---|---|
| 1/1/2016 | BM-XN | ||
| 1/3/2016 | VQR-GG2 | ||
| 1/4/2016 | VQR-GG2 | ||
| 1/6/2016 | PIB-H20 | ||
| …… | …… | …… | …… |
关于LOOKUP的局限与最优方案
首先明确:LOOKUP函数并不适合你的需求。LOOKUP主要用于在单列/单行中查找单个匹配值并返回对应结果,而你需要的是同时按「Date」和「Product」两个条件进行求和汇总,这种场景下SUMIFS才是专门的解决方案,而且针对10万行的大数据,它的计算效率也完全够用。
具体公式用法
假设你的原始数据在Sheet1,目标汇总表在Sheet2:
1. 计算Total_Sales_in_Units
在Sheet2的C2单元格(对应第一行汇总的销量)输入公式:
=SUMIFS(Sheet1!$C:$C, Sheet1!$A:$A, Sheet2!$A2, Sheet1!$B:$B, Sheet2!$B2)
按下回车后,直接下拉填充整列即可。
参数解释:
Sheet1!$C:$C:原始数据中需要求和的「Sales_in_Units」列(绝对引用列,下拉时不会偏移)Sheet1!$A:$A:第一个条件列「Date」Sheet2!$A2:当前行需要匹配的日期(相对引用行,下拉时自动匹配目标表的对应行)Sheet1!$B:$B:第二个条件列「Product」Sheet2!$B2:当前行需要匹配的产品名称
2. 计算Total_Sales USD
在Sheet2的D2单元格输入公式:
=SUMIFS(Sheet1!$D:$D, Sheet1!$A:$A, Sheet2!$A2, Sheet1!$B:$B, Sheet2!$B2)
同样下拉填充整列即可。
关键注意事项
- 格式一致性:确保原始数据和目标表中的「Date」格式完全一致(比如都是日期格式,不要一个是文本型日期一个是数值型日期),「Product」的拼写、大小写也完全匹配,否则会出现匹配不到的情况。
- 数值格式:原始数据的「Sales USD」如果带有逗号分隔符,要确认单元格是数值格式(不是文本格式),否则SUMIFS会无法正确求和。
- 大数据优化:因为你的数据有10万行,建议把整列引用(比如
$C:$C)改成精确的范围,比如$C$1:$C$100000,这样能减少公式计算时的扫描范围,提升速度。
示例结果验证
比如目标表第一行「1/1/2016 BM-XN」,用公式计算后:
- Total_Sales_in_Units = 266(和原始数据一致,当天只有这一条记录)
- Total_Sales USD = 685740(同样匹配原始数据)
再比如如果有同一日期同一产品的多条记录(比如原始表中1/2/2016的PIB-H20),SUMIFS会自动把对应的销量和销售额相加,完全符合你的需求。
内容的提问来源于stack exchange,提问作者Ann
相关产品推荐
相关产品推荐

