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代码。
相关推荐
弗拉唐9 小时前
将Excel文件的两个表格经过验证后分别读取到Excel表和数据库
数据库·excel
Lizzy_Fly9 小时前
【Excel】身份证号最后一位“X”怎么计算
excel
深情废杨杨9 小时前
后端-实现excel的导出功能(超详细讲解)
java·spring boot·excel
智汇探长9 小时前
EasyExcel自定义设置Excel表格宽高
java·excel·easyexcel
Eiceblue9 小时前
通过Python 调整Excel行高、列宽
开发语言·vscode·python·pycharm·excel
crackbuy9 小时前
Excel筛选的操作教程
excel
笔墨登场说说9 小时前
Excel SUMIFS
excel
Lizzy_Fly11 小时前
【Excel】ToRow超级查找函数
excel
mon_star°11 小时前
将答题成绩排行榜数据通过前端生成excel的方式实现导出下载功能
前端·excel
冰淇淋烤布蕾20 小时前
EasyExcel使用
java·开发语言·excel