简全称混用
问题:将表2的数据2填入表1数据2中,表1数据1为简称,表2数据1为全称
函数公式解决:
=SUMIF(D:D,@SORTBY(D$2:D$9,MMULT(COUNTIF(A2,"*"&MID(D$2:D$9,SEQUENCE(,9),1)&"*")*(SEQUENCE(,9)<=LEN(D$2:D$9)),ROW(1:9)^0),-1),E:E)
Sumif(代替Xlookup的查找写法),查找满条件是A2的,D列中对应E列的结果
Mid部分将D2:D9中内容按每个单元格一个字符进行拆分,假设D列中字符不超过9个
Countif用于统计表2数据1中每一个字在A2中是否存在,存在为1,不存在为0
当Mid的结果为空文本时,也会返回1,所以用Sequence9列数据和D2:D9每个单元格中长度进行比较,字符数以内的为True,否则为False,再与CountIf的结果相乘
MMult用于对上述结果横行每行进行求和
SortBy将D2:D9的数据按上述公式结果从大到小排列
@为数组的隐式交集,此处用于提取数组的第一个值
但是!
当同字符个数相同时,返回的结果是第一个出现的。
所以简全称查找函数公式并无完美方案。
另,以上公式在Excel中可以简化如下:
=SUMIF(D:D,@SORTBY(D$2:D$9,BYROW(LET(a,MID(D$2:D$9,SEQUENCE(,9),1),COUNTIF(A2,"*"&a&"*")*(a<>"")),SUM),-1),E:E)
事先列出简全称对照表:
=SUMIF(D:D,XLOOKUP(A2,H:H,G:G),E:E)
输入前的事先控制:
选取需要输入名称的单元格》数据》下拉列表》从单元格选择下拉选项》确定