You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

Excel技术问询:列重复及特定文本条件下的求和与文本合并公式

嘿,针对你的需求,我整理了两种场景下的Excel公式方案——分别适配Excel 365/2021(支持动态数组)和旧版Excel,帮你同时实现条件求和与文本合并:

一、Excel 365/2021 版本方案(推荐)

这个版本可以直接用动态数组函数,公式更简洁易懂。假设你要在D2单元格生成对应A2行的结果,输入以下公式后下拉即可:

=IF(AND(COUNTIF(A:A,A2)>1,COUNTIFS(A:A,A2,B:B,"Income")>0,COUNTIFS(A:A,A2,B:B,"Special Cash")>0),TEXTJOIN(" | ",TRUE,"求和结果: "&SUMIFS(C:C,A:A,A2,B:B,{"Income","Special Cash"}),"合并文本: "&TEXTJOIN(", ",TRUE,FILTER(B:B,(A:A=A2)*(B:B={"Income","Special Cash"})))),"")

公式拆解:

  1. 条件判断部分AND(COUNTIF(A:A,A2)>1,COUNTIFS(A:A,A2,B:B,"Income")>0,COUNTIFS(A:A,A2,B:B,"Special Cash")>0)
    • COUNTIF(A:A,A2)>1:检查当前A列的值是否存在重复(出现次数大于1)
    • 后面两个COUNTIFS:确认该A值对应的行里,同时存在IncomeSpecial Cash这两个文本
  2. 求和部分SUMIFS(C:C,A:A,A2,B:B,{"Income","Special Cash"})
    • 自动计算符合「A列等于当前值」且「B列是指定两个文本」的C列数值之和
  3. 文本合并部分TEXTJOIN(", ",TRUE,FILTER(B:B,(A:A=A2)*(B:B={"Income","Special Cash"})))
    • 先用FILTER筛选出符合条件的B列文本,再用TEXTJOIN用「逗号+空格」合并,TRUE参数用来忽略空值
  4. 结果整合:用TEXTJOIN把求和结果和合并文本用「|」分隔,符合条件就显示结果,否则显示空值
二、旧版Excel 兼容方案

如果你的Excel版本不支持FILTERTEXTJOIN(比如2016及更早版本),可以用数组公式实现:

求和公式(D2单元格):

=IF(AND(COUNTIF(A:A,A2)>1,COUNTIFS(A:A,A2,B:B,"Income")>0,COUNTIFS(A:A,A2,B:B,"Special Cash")>0),SUM(SUMIFS(C:C,A:A,A2,B:B,{"Income","Special Cash"})),"")

输入后直接下拉即可,不需要数组输入。

文本合并公式(E2单元格):

=IF(AND(COUNTIF(A:A,A2)>1,COUNTIFS(A:A,A2,B:B,"Income")>0,COUNTIFS(A:A,A2,B:B,"Special Cash")>0),LEFT(TEXTJOIN(", ",TRUE,IF((A:A=A2)*(B:B="Income"),B:B,""),IF((A:A=A2)*(B:B="Special Cash"),B:B,"")),LEN(TEXTJOIN(", ",TRUE,IF((A:A=A2)*(B:B="Income"),B:B,""),IF((A:A=A2)*(B:B="Special Cash"),B:B,"")))),"")

注意:输入完成后需要按 Ctrl+Shift+Enter 作为数组公式确认,然后下拉应用到其他行。

内容的提问来源于stack exchange,提问作者J.Markson

火山引擎 最新活动