打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
单元格内一对多查询


一、图1

二、图2

三、函数解决

1、公式截图

2、公式

=VLOOKUP(--TRIM(MID(SUBSTITUTE(A2,'.',REPT(' ',99)),1,99)),参数表!A:B,2,0)&','&VLOOKUP(--TRIM(MID(SUBSTITUTE(A2,'.',REPT(' ',99)),100,99)),参数表!A:B,2,0)&','&VLOOKUP(--TRIM(MID(SUBSTITUTE(A2,'.',REPT(' ',99)),199,99)),参数表!A:B,2,0)

3、公式解释

  • --TRIM(MID(SUBSTITUTE(A2,'.',REPT(' ',99)),1,99))用拉大距离法把单元格每个数字接点号分隔出来作为vlookup函数的第1参数到参数表中查找,查找出来的3个结果然后用逗号把它们连接起来就可以了

  • 可以这位朋友又提出问题,如果数字中间分隔符是任意的字符如何实现,且可能输入的数字不只三个,又如何实现。那这里用函数实现就公式更长了,下面我用vba自定义函数实现

四、vba自定义函数实现

1、公式截图

2、公式

=提(A9,参数表!$A$1:$B$20)

3、动画演示


4、代码

Option Explicit

Function 提(rg As Range, SumRg As Range)

    Dim arr1, arr2, arr3(), x, k, y, Reg, M, Mat

    Application.Volatile '让函数刷新

    Set Reg = CreateObject('Vbscript.RegExp') '引用外部对象正则表达式

    With Reg

        .Global = True

        .Pattern = '\d ' '匹配任意长的数字

    End With

    Set Mat = Reg.Execute(rg) '把所有的符合规则的装进mat

    arr1 = SumRg '把第2参数装入数组,目的为了提速度

    For Each M In Mat循环符合规则的数字

        For y = 1 To UBound(arr1) '循环数组arr1

            If arr1(y, 1) = Val(M) Then '判断是否和M相等于,由于M还是文本型的数字,通过val处理转为数值型数字

                k = k 1 '计数

                ReDim Preserve arr3(1 To k) '重新定义arr2的空间,且保留原有值

                arr3(k) = arr1(y, 2) '把数组arr1的第2参装进arr3

            End If

        Next y

    Next M

    提 = Join(arr3, ',') '把结果赋值给函数名

End Function

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
用自定义函数提取单元格内字符串中的数字
轻松成为办公高手
财务人员必懂得几个Excel函数(一)
在Excel中按指定的重复次数填充数据到一列
EXCEL中如何使用VLOOKUP函数提取单元格字符串中的数值
Excel不重复数值个数如何快速统计?大神告诉我用这2个函数组合
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服