当前位置: 首页 > news >正文

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代码。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 数据结构-查找
  • python-NLP:4句法分析
  • 共塑AI新篇章 | 云轴科技ZStack亮相2024中国操作系统产业大会
  • 阿里云服务器CentOS7安装MinIO
  • Linux 服务器上简单配置 minio
  • VulnHub:BlueMoon
  • noi 1700 输出 八皇后问题
  • 使用zip包来安装mysql
  • Vue3+Setup使用websocket
  • mybatis xml 动态sql相关语法
  • <Linux>进程概念-下
  • 表操作数据库练习
  • 苹果电脑文件加密?【小编带你挖宝解决问题!】
  • 基于UDP的网络聊天室
  • 湖南省第八届职工职业技能大赛 暨“智赋万企”数字化应用技术技能大赛 网络与信息安全管理员赛项技术文件
  • [deviceone开发]-do_Webview的基本示例
  • 《网管员必读——网络组建》(第2版)电子课件下载
  • Android优雅地处理按钮重复点击
  • GitUp, 你不可错过的秀外慧中的git工具
  • java中具有继承关系的类及其对象初始化顺序
  • maya建模与骨骼动画快速实现人工鱼
  • redis学习笔记(三):列表、集合、有序集合
  • Spring Boot MyBatis配置多种数据库
  • SpringCloud(第 039 篇)链接Mysql数据库,通过JpaRepository编写数据库访问
  • vue 配置sass、scss全局变量
  • 从@property说起(二)当我们写下@property (nonatomic, weak) id obj时,我们究竟写了什么...
  • 分布式任务队列Celery
  • 构造函数(constructor)与原型链(prototype)关系
  • 互联网大裁员:Java程序员失工作,焉知不能进ali?
  • 解决jsp引用其他项目时出现的 cannot be resolved to a type错误
  • 罗辑思维在全链路压测方面的实践和工作笔记
  • 码农张的Bug人生 - 见面之礼
  • 前端js -- this指向总结。
  • 思否第一天
  • 提升用户体验的利器——使用Vue-Occupy实现占位效果
  • 微信端页面使用-webkit-box和绝对定位时,元素上移的问题
  • 想使用 MongoDB ,你应该了解这8个方面!
  • 最近的计划
  • ​HTTP与HTTPS:网络通信的安全卫士
  • # 20155222 2016-2017-2 《Java程序设计》第5周学习总结
  • # 利刃出鞘_Tomcat 核心原理解析(八)-- Tomcat 集群
  • ${ }的特别功能
  • (1)安装hadoop之虚拟机准备(配置IP与主机名)
  • (11)MSP430F5529 定时器B
  • (12)Linux 常见的三种进程状态
  • (31)对象的克隆
  • (a /b)*c的值
  • (C语言)求出1,2,5三个数不同个数组合为100的组合个数
  • (ZT)出版业改革:该死的死,该生的生
  • (zt)基于Facebook和Flash平台的应用架构解析
  • (每日持续更新)jdk api之FileReader基础、应用、实战
  • (牛客腾讯思维编程题)编码编码分组打印下标题目分析
  • (算法)N皇后问题
  • (学习日记)2024.03.12:UCOSIII第十四节:时基列表
  • (一)使用IDEA创建Maven项目和Maven使用入门(配图详解)