excel 2019版本的index match搜索功能

{=TEXTJOIN("+", TRUE, IF((sheet2!A:A="文字")*(sheet2!C:C=C5), sheet2!G:G, ""))}

excel单元格输入公式后:

=TEXTJOIN("+", TRUE, IF((sheet2!A:A="文字")*(sheet2!C:C=C5), sheet2!G:G, ""))

按Ctrl+Shift+Enter会出现{},代表数组公式,可以查找一组数据,并返回一组数据,然后根据情况处理即可,可以用JOIN将一组数据合并到一个单元格,用+分割或者其他符号分割即可。

原理:

复制代码
公式原理分解
1. 查找匹配的起始行号
这部分公式使用MATCH函数来确定与目标字符串(如"KV-20712314")首次匹配的位置:

excel
深色版本
MATCH("KV-20712314", Sheet2!A:A, 0)
"KV-20712314" 是我们要查找的文本。
Sheet2!A:A 是我们将在其中查找的列。
0 表示我们正在寻找精确匹配。
2. 查找匹配的结束行号
这部分公式也使用MATCH函数,但稍微复杂一些,因为它需要找到最后一项匹配的位置:

excel
深色版本
MATCH(1E+99, INDEX((Sheet2!A:A="KV-20712314")*Sheet2!E:E, , ), 0)
(Sheet2!A:A="KV-20712314") 创建一个逻辑数组,其中如果A列的值等于"KV-20712314",则为TRUE,否则为FALSE。
*(Sheet2!E:E) 将逻辑数组与E列的数值相乘。由于TRUE相当于1,FALSE相当于0,这意味着只有那些与"KV-20712314"匹配的行的金额会被保留下来,其余的都被设置为0。
INDEX(..., , ) 是一个特殊用法,其中第二个参数为空,这意味着INDEX将返回整个列。这样我们得到一个数组,其中包含了所有匹配项的金额以及其余为0的值。
MATCH(1E+99, ...) 寻找数组中的最大值(1E+99是一个非常大的数,保证能大于任何可能的金额)。由于我们之前将非匹配项设置为0,MATCH函数将找到最后一个非零值(即最后一个匹配项)的行号。
3. 使用INDEX和:操作符获取匹配项范围
一旦我们有了起始和结束行号,我们可以使用INDEX和:操作符来提取这一范围内的所有值:

excel
深色版本
INDEX(Sheet2!E:E, MATCH(...)) : INDEX(Sheet2!E:E, MATCH(...))
这将返回一个包含所有匹配项金额的数组。

4. 使用TEXTJOIN连接结果
最后,TEXTJOIN函数被用来将这些数值转换为带有分隔符的文本串:

excel
深色版本
TEXTJOIN("+", TRUE, ...)
"+" 是分隔符。
TRUE 表示忽略空值。
... 是从INDEX函数返回的数组。
总结公式
将所有部分放在一起,我们得到了完整的数组公式:

excel
深色版本
=TEXTJOIN("+", TRUE, INDEX(Sheet2!E:E, MATCH("KV-20712314", Sheet2!A:A, 0)):INDEX(Sheet2!E:E, MATCH(1E+99, INDEX((Sheet2!A:A="KV-20712314")*Sheet2!E:E, , ), 0)))
注意事项
由于公式中包含:操作符,它需要作为数组公式输入,即使用Ctrl+Shift+Enter。
如果你的Excel版本不支持INDEX函数的第二参数留空,你可能需要使用ROW函数和MATCH函数的组合来构建一个正确的索引数组。
这个公式假设匹配的行在数据中是连续的。如果有不连续的匹配行,你可能需要更复杂的解决方案,例如使用AGGREGATE函数或VBA代码。
相关推荐
娃乐呵6 小时前
免费的大批量Excel文档大模型处理数据工具
语言模型·大模型·excel·数据处理
Eiceblue9 小时前
使用 Python 写入多类型数据至 Excel 文件
开发语言·python·excel
蹦蹦跳跳垂耳兔10 小时前
Excel创建组妙用隐藏
excel
开开心心_Every12 小时前
无广告干扰:简单好用文字LOGO设计工具
xml·java·网络·数据库·华为od·华为云·excel
CodeCraft Studio2 天前
Excel处理控件Aspose.Cells教程:使用C#在Excel中创建气泡图
信息可视化·c#·excel·aspose·excel api库·excel气泡图·excel组件库
CodeCraft Studio2 天前
国产化Excel开发组件Spire.XLS教程:使用Python批量删除Excel分页符
开发语言·python·excel·python开发·spire.xls·excel api库·excel开发组件
缺点内向2 天前
C#:轻松实现Excel到TXT的转换
后端·c#·.net·excel
ghgxm5202 天前
EXCEL使用VBA代码实现按条件查询数据库--简单实用
开发语言·数据仓库·笔记·excel·数据库开发
kaka-3333 天前
微信小程序中使用 xlsx(xlsx.mini.min.js)实现 Excel 导入导出功能
javascript·微信小程序·excel
开开心心_Every3 天前
优化C盘存储:自定义软件文档保存路径工具
java·网络·数据库·typescript·word·asp.net·excel