如何使用单个输入输出单元格对数组中查找到的多个值求和
Excel多城市匹配求和解决方案
以下方案覆盖不同Excel版本场景,可直接套用:
适用Excel 365/2021及以上版本
这类版本支持TEXTSPLIT拆分函数,公式最简洁:
=SUM(XLOOKUP(TEXTSPLIT(输入单元格, ", "), 城市名称列范围, 人口数值列范围, 0))
示例套用
假设你的城市名称存放在A2:A4,对应人口存放在B2:B4,逗号分隔的城市输入内容在D1单元格,公式直接写为:=SUM(XLOOKUP(TEXTSPLIT(D1, ", "), A2:A4, B2:B4, 0))
说明:
TEXTSPLIT会自动把输入的字符串按,(逗号加空格)拆分为独立的城市名数组,XLOOKUP依次匹配每个城市对应的人口数值,最后由SUM统一求和,完全不需要考虑输入的城市数量。公式末尾的0代表找不到对应城市时返回0,避免报错。
适用旧版Excel(无TEXTSPLIT函数)
用SUMPRODUCT+SEARCH组合实现兼容:
=SUMPRODUCT(ISNUMBER(SEARCH(", " & 城市名称列范围 & ", ", ", " & 输入单元格 & ", ")) * 人口数值列范围)
示例套用
和上面的示例参数一致的情况下,公式为:=SUMPRODUCT(ISNUMBER(SEARCH(", " & A2:A4 & ", ", ", " & D1 & ", ")) * B2:B4)
说明:前后拼接
,是为了避免短名称误匹配(比如存在N和NY两个城市时,不会把NY误判为匹配N)。SEARCH判断城市名是否存在于输入字符串中,存在则返回1,不存在返回0,和人口数值相乘后求和即可得到最终结果。如果需要区分大小写匹配,把SEARCH替换为FIND即可。
通用注意事项
- 如果你的输入分隔符只有逗号没有空格,把公式中所有
", "替换为","即可,要和实际输入的分隔符完全一致 - 如果输入城市有拼写错误、不在名称列范围内的情况,会自动按0计算,不会影响整体求和
内容的提问来源于stack exchange,提问作者NeedExcelHelp2021
相关产品推荐
相关产品推荐

