ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: YZC51

[讨论] 自定义函数--提取单元格内多个被分开的数字

  [复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-9-7 19:37 | 显示全部楼层

模拟微软还未正式发布的 XLOOKUP 函数

本帖最后由 YZC51 于 2019-9-8 14:58 编辑

XLOOKUP语法规则

该函数的语法规则如下:(黄色部分为自己修改的)
XLOOKUP(lookup _value, lookup _array,return _array, [match _mode], [search _mode])
  
参数
  
简单说明
输入数据类型
Lookup _value
要查找的值
数值、引用或文本字符串
lookup _array
要查找的区域
数据表区域
Return _array
返回值的区域
数据表区域
Match _mode
模糊匹配/精确匹配等
数值0、-1、1、2(默认为0)
Search _mode
查找模式
查找第几个或最后一个
参数说明
Lookup _value为需要在数据表区域中进行查找的数值。Lookup_value可以为数值、引用或文本字符串。当Xlookup函数第一参数省略时,表示用0查找

Lookup _array为需要在其中查找数据的区域。使用对区域或区域名称的引用。
return _array为需要在其中返回数据的区域。使用对区域或区域名称的引用。

Match _mode为一数值,指明函数 Xlookup 查找时是精确匹配,还是近似匹配等。
0-精确匹配
-1-精确匹配或下一个较小的项
1-精确匹配或下一个较大的项
2-通配符匹配
3-增加包含匹配

Search _mode 为一数值,指明函数 XLOOKUP 查找查找第几个或最后一个等
0 -为一对多查找
-1-返回最后的匹配值
1 -返回第一个匹配值
N-返回第N个匹配值

迎接 XLOOKUP 函数-3.1.rar

589.9 KB, 下载次数: 176

评分

3

查看全部评分

TA的精华主题

TA的得分主题

发表于 2019-9-7 23:26 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
YZC51 发表于 2019-9-7 19:37
XLOOKUP语法规则
该函数的语法规则如下:(黄色部分为自己修改的)XLOOKUP(lookup _value, lookup _array, ...

没花了......

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-9-8 10:07 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-9-8 10:35 | 显示全部楼层
本帖最后由 YZC51 于 2019-9-8 15:03 编辑

模拟微软最新 Xlookup 函数的附件
迎接 XLOOKUP 函数.rar (541.62 KB, 下载次数: 119)

评分

3

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-9-8 17:10 | 显示全部楼层
本帖最后由 YZC51 于 2019-9-17 23:53 编辑

模拟微软最新 Xlookup 函数的附件
请老师们下载139楼的附件!谢谢!

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-9-9 13:09 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 YZC51 于 2019-9-9 19:01 编辑

'具有 Split 功能的自定义函数
Function Split(ByVal rng As String, Optional ByVal yrng As String = " ", Optional ByVal num As Integer = 0) As String
    rng = rng & yrng
    If num < 0 Then Split = "": Exit Function
    Select Case num
        Case 0
            If InStr(rng, yrng) = 0 Then Split = "": Exit Function
            Split = Mid(rng, 1, InStr(rng, yrng) - 1)
        Case Else
            rng1 = Replace(rng, yrng, "", , num - 1)
            If InStr(rng1, yrng) < 1 Then Split = "": Exit Function
            Split = Mid(rng1, InStr(rng1, yrng) + Len(yrng))
    End Select
End Function

'加强型 Split 功能的自定义函数
Function Splity(rng, Optional y = " ", Optional n = 0, Optional m = 0)

'y=默认分隔符为空格
'n=从第几节开始取,n为0时全取
'm=共取几节

    rng = rng & y
    If n < 0 Then Splity = "": Exit Function
    If n = 0 Then
        Splity = rng
    Else
        rng1 = Replace(rng, y, "", , n - 1)
        Splity = Mid(rng1, InStr(rng1, y) + Len(y))
    End If
    If m > 0 Then
        rng2 = Replace(Splity, y, Chr(28), , m - 1)
        Splity = Replace(Mid(rng2, 1, InStr(rng2, y) - Len(y)), Chr(28), y)
    End If
End Function

'加强型 Split 功能的自定义函数2
Function Splitmy(rng, Optional y = " ", Optional n = 0, Optional x = " ")

'y=默认分隔符为空格
'n=从第几节开始取,n为0时全取
'x=默认分隔符为空格,提取分隔符前的字符

    rng = rng & y
    If n < 0 Then Splitmy = "": Exit Function
    If n = 0 Then
        Splitmy = rng
    Else
        rng1 = Replace(rng, y, "", , n - 1)
        Splitmy = Mid(rng1, InStr(rng1, y) + Len(y))
    End If
    If InStr(Splitmy, x) > 0 Then
        rng2 = Splitmy
       Splitmy = Mid(rng2, 1, InStr(rng2, x) - 1)
    End If
End Function

评分

2

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-9-9 14:55 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
Public Function zm(t) '转码,制作:yzc51
'//"1\u4e09\u68df\u5c4b\u8def"
If InStr(t, "\u") Then
    V = Split(t, "\u")
    For i = 1 To UBound(V)
        m = m & ChrW("&H" & Left(V(i), 4)) & Mid(V(i), 6)
    Next
    m = V(0) & m
Else
    m = t
End If
zm = m
End Function

评分

2

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-9-10 10:56 | 显示全部楼层
Function ColorSum(Ref_color As Range, Sum_range As Range, Optional n = 0) '背景颜色求和等
    Application.Volatile
    Dim iCol As Integer
    Dim rCell As Range
    iCol = Ref_color.Interior.ColorIndex
    For Each rCell In Sum_range
        rCol = rCell.Interior.ColorIndex
        If iCol = rCol And Len(rCell) And IsNumeric(rCell) And rCell > 0 Then
            m = m + 1
            ColorSum = ColorSum + rCell                         '求和
        End If
    Next rCell
    If n = 1 Then ColorSum = ColorSum & "/" & m                 '显示和与个数
    If n = 2 Then ColorSum = Evaluate(ColorSum & "/" & m)       '显示平均数
End Function

评分

2

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-9-11 10:54 | 显示全部楼层
Function SHUZI(T) '提取单元格中的数字
    Dim i, str1
    For i = 1 To Len(T.Value)
'        If IsNumeric(Application.Find(Mid(T.Value, i, 1), "0123456789.")) Then
        If InStr("0123456789.", Mid(T.Value, i, 1)) Then
            str1 = str1 & Mid(T.Value, i, 1)
        End If
    Next
    SHUZI = Val(str1)
End Function

评分

3

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-9-14 10:17 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
Sub 取消分类汇总分级显示()
On Error Resume Next
Dim wsh As Worksheet
For Each wsh In Worksheets
    wsh.Activate
    Cells.ClearOutline
    Cells.RemoveSubtotal
    sh.Range("A1").Select
Next
Sheets("Sheet1").Select
End Sub

评分

2

查看全部评分

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-16 02:28 , Processed in 0.048125 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表