You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Excel多条件求和(含部分文本匹配)及动态区域保持需求技术问询

Excel多条件求和(含部分文本匹配)及动态区域保持需求技术问询

嗨,我来帮你搞定这个Excel多条件求和的问题~先理清楚你的核心需求:

  • 要在Sheet1的F37单元格,对Sheet2里E7:AB150区域的数值求和
  • 求和要满足两个条件:
    1. Sheet2的B3:B100区域里的单元格,等于Sheet1 B37的内容
    2. Sheet2第2行(A2:AB2)的单元格,包含指定的部分文本(之前你用的是精确匹配,现在要改成模糊匹配)
  • 关键要求:删除行/列后,公式引用的区域不能出错,你已经用OFFSET实现了这个稳定性,不想用INDIRECT

你现在的公式已经能实现精确匹配的条件求和,要改成部分文本匹配,只需要修改第二个条件的判断逻辑就行。咱们来调整一下:

修改后的数组公式

{=SUM((OFFSET('Sheet2'!$E$6;1;1;150;40))*(--('Sheet2'!$C$7:$C$152=Sheet1!B37))*(--(ISNUMBER(SEARCH("TR", OFFSET('Sheet2'!$E$1;0;1;1;40))))))}

公式修改说明

  1. 部分文本匹配的实现:把原来的--(OFFSET(...)="TR")改成--(ISNUMBER(SEARCH("TR", OFFSET(...))))

    • SEARCH("TR", 目标单元格):会在目标单元格里查找"TR"这个文本,找到就返回它的位置(数字),找不到返回错误值
    • ISNUMBER(...):把SEARCH的结果转成TRUE(找到)或FALSE(没找到)
    • 前面加--:把TRUE/FALSE转成1/0,这样就能和其他条件的数组相乘,只有符合条件的单元格才会参与求和
  2. 更灵活的文本引用(可选):如果不想把"TR"硬写在公式里,想引用Sheet1的某个单元格(比如C37),可以改成这样:

{=SUM((OFFSET('Sheet2'!$E$6;1;1;150;40))*(--('Sheet2'!$C$7:$C$152=Sheet1!B37))*(--(ISNUMBER(SEARCH(Sheet1!C37, OFFSET('Sheet2'!$E$1;0;1;1;40))))))}

注意事项

  • 数组公式的确认:如果你用的是Excel 2019及更早版本,输入完公式后要按Ctrl+Shift+Enter来确认;Excel 365/2021版本直接回车就行
  • 大小写区分:SEARCH函数不区分大小写,如果需要严格区分大小写,把SEARCH换成FIND函数
  • 动态区域的稳定性:你用OFFSET的写法是对的,基于固定单元格偏移,删除行/列后不会出现#REF!错误,能保持引用区域的有效性

备注:内容来源于stack exchange,提问作者Васил Недялков

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.15 14:20:29