跨工作簿按条件求和问题:拆分未分隔名称后仅部分匹配生效
问题分析
你的公式核心问题在于MATCH函数只会返回第一个满足条件的行号,导致SUM实际只计算了单个匹配单元格的值,而非所有符合条件的结果总和。另外,重复调用IMPORTRANGE不仅效率低,还可能触发Google Sheets的调用限制。
解决方案
方法1:SUM+FILTER组合(推荐)
用FILTER直接筛选所有符合条件的数值,再求和,能一次性获取所有匹配项的总和:
=SUM(FILTER( IMPORTRANGE("Workbook A", K10 & "!I:I"), IMPORTRANGE("Workbook A", K10 & "!H:H")=G12, REGEXMATCH(IMPORTRANGE("Workbook A", K10 & "!G:G"), TEXTJOIN("|", TRUE, SPLIT(H12, ", "))) ))
如果担心多次调用IMPORTRANGE出问题,可先把数据导入当前工作表的辅助区域:
在空白单元格(比如A1)输入:
=IMPORTRANGE("Workbook A", K10 & "!G:I")
再基于辅助区域计算,公式调整为:
=SUM(FILTER( C:C, // 对应原Workbook A的I列 B:B=G12, // 对应原Workbook A的H列 REGEXMATCH(A:A, TEXTJOIN("|", TRUE, SPLIT(H12, ", "))) // 对应原Workbook A的G列 ))
注意根据辅助区域的实际列位置调整参数。
方法2:QUERY函数
用QUERY做复杂筛选求和,语法更紧凑:
=QUERY( IMPORTRANGE("Workbook A", K10 & "!G:I"), "SELECT SUM(Col3) WHERE Col2 = '"&G12&"' AND REGEXP_MATCH(Col1, '"&TEXTJOIN("|", TRUE, SPLIT(H12, ", "))&"') LABEL SUM(Col3) ''", 0 )
这里Col1对应原G列,Col2对应原H列,Col3对应原I列,注意字符串拼接时的单引号不要遗漏,避免语法错误。
注意事项
- 首次使用
IMPORTRANGE时,需完成授权才能访问Workbook A的数据 - 确认
SPLIT(H12, ", ")能正确拆分名称(比如H12为Dian, Mike, Lily时,需拆分出三个独立名称)
内容的提问来源于stack exchange,提问作者Boscha
相关产品推荐
相关产品推荐

