背景介绍:
需要根据原理图CIS库里元器件对一份近期入库元器件excel文档更新后提供给相关部门(注:CIS库在使用过程中发现一些错误或者不完善的地方会实时更新)。
方法:
- 需要更新的文档有大几千行,首先要做的是对文档元器件某一列属性进行筛选并排序
- 选中某一列全部数据区域
- 顶部【数据】→【筛选】,每列表头出现下拉箭头
- 点击目标列下拉箭头→选择关键属性显示
- 显示包含该关键属性值的所有行
- 把一整列多行数据,合并到单个单元格,自定义分隔符号、前后包裹符号(特殊格式)
函数:TEXTJOIN(分隔符, 是否忽略空单元格, 要合并的区域)
示例需求
A2:A10 是包含名单:张三、李四、王二、赵五
想要合并成目标单元格格式: {"张三","李四","王二","赵五"}
公式 ="{"""&TEXTJOIN(""",""",TRUE,A2:A10)&"""}"
拆解:
- TEXTJOIN(""",""",TRUE,A2:A10)
- """,""" 输出文本:","
- TRUE = 跳过空白单元格
- 中间合并结果:张三","李四","王二","赵五
- 拼接 {“ 和 “}
- 最终输出:{"张三","李四","王二","赵五"}
- 从CIS库里面导出该属性的元器件,并excel表格显示
- 从CIS库里面导出的excel文件中提取包含元器件关键属性的所有行,并单独显示
- 一次性筛选出包含张三李四王二的所有行,单独展示
=LET(
全部数据,A2:D100,
姓名列,A2:A100,
名单,{"张三","李四","王二","赵五"},
标记,BYROW(姓名列,LAMBDA(x,OR(ISNUMBER(SEARCH(单,x))))), FILTER(全部数据,标记,"无匹配")
)
完整执行流程(从上到下)
- LET 先定义 3 个固定变量:数据区域、姓名列、要查找的人名数组;
- BYROW 逐行遍历每个姓名单元格;
- 每行内用 SEARCH 批量匹配全部人名,ISNUMBER 转真假;
- OR 判断该行是否命中任意人名,生成一整列标记;
FILTER 根据标记,提取所有命中的完整数据行,自动溢出展示。
批量提取:FILTER 函数适合自动提取全部包含片段的完整数据行,结果独立不改动原表,支持多关键词批量查找
- 将提取出来的包含元器件关键属性的所有行复制到需要更新的excel文档
- 保存更新的excel文档,选择筛选的下一个属性值,重复操作
- 实用程序:
将H3:H41列合成目标单元格格式
="{"""&TEXTJOIN(""",""",TRUE,H3:H41)&"""}"
在excel表格A2:K115区域,筛选列A2:A115,包含目标单元格内容的所有行, 单独展示
=LET(
全部数据,A2:K115,
物料编码列,A2:A115,
物料编码,{"LS00017","LS01736"},
标记,BYROW( 物料编码列,LAMBDA(x,OR(ISNUMBER(SEARCH(物料编码,x))))),
FILTER(全部数据,标记,"无匹配")
)