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代码。
相关推荐
星空的资源小屋2 天前
Digital Clock 4,一款免费的个性化桌面数字时钟
stm32·单片机·嵌入式硬件·电脑·excel
揭老师高效办公2 天前
在Excel和WPS表格中批量删除数据区域的批注
excel·wps表格
我是zxb2 天前
EasyExcel:快速读写Excel的工具类
数据库·oracle·excel
辣香牛肉面2 天前
[Windows] 搜索文本2.6.2(从word、wps、excel、pdf和txt文件中查找文本的工具)
word·excel·wps·搜索文本
ljf88382 天前
Java导出复杂excel,自定义excel导出
java·开发语言·excel
tebukaopu1482 天前
json文件转excel
json·excel
shizidushu2 天前
How to work with merged cells in Excel with `openpyxl` in Python?
python·microsoft·excel·openpyxl
Eiceblue3 天前
使用 C# 设置 Excel 单元格格式
开发语言·后端·c#·.net·excel
acaad3 天前
Apache Poi 实现导出excel表格 合并区域边框未完全显示的问题
spring·apache·excel
周杰伦fans3 天前
.NET 轻量级处理 Excel 文件库 - MiniExce
windows·.net·excel