
一、公式思路
在E2单元格输入公式:
=XLOOKUP(TRUE,MAP(A$2:A$5,LAMBDA(x,REGEXP(D2,TEXTJOIN(".*?",,MID(x,SEQUENCE(LEN(x)),1)))<>"")),B$2:B$5,"无匹配") |
① 用MID+SEQUENCE,把简称拆成单个字
② 用TEXTJOIN,把每个字之间插入".*?",拼接成正则表达式
③ 用REGEXP,拿正则去全称里匹配,看能不能对上
④ 用MAP+LAMBDA,对每个简称重复上述操作,得到一组TRUE/FALSE
⑤ 用XLOOKUP,找到第一个TRUE,返回对应的余额
二、公式拆解
以D2="中国工商银行股份有限公司"为例,逐层拆解:
三、正则表达式".*?"是什么意思?
以"工行"为例:
MID拆字:{"工","行"} TEXTJOIN拼接:"工.*?行" 正则含义:匹配"工"开头,"行"结尾,中间可以有任意字符
四、函数语法 []内为可选填参数,剩余参数为必选项
1. MID(文本, 起始位置, 提取字符数)
作用:从文本中指定位置提取指定数量的字符
2. TEXTJOIN(分隔符, 忽略空值, 文本1, [文本2], ...)
作用:用指定分隔符将多个文本拼接成一个
3. REGEXP(原始字符串, 正则表达式, [匹配模式], [替换内容])
作用:用正则表达式在文本中查找匹配内容
4. MAP(数组, LAMBDA(变量, 表达式))
作用:对数组中的每个元素,执行LAMBDA定义的运算,返回一组结果
5. XLOOKUP(查找值, 查找数组, 返回数组, [未找到值], [匹配模式], [搜索模式])
作用:按条件查找并返回对应结果
XLOOKUP函数的详细用法可以参考这篇文章Excel篇-XLOOKUP vs FILTER:Excel 一对一 / 一对多查找完整教程,做表必备
👉 收藏 + 在看,用的时候不迷路
夜雨聆风