ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

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

  [复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-8-23 18:24 | 显示全部楼层
lhsh36183 发表于 2019-8-13 17:54
请问有用2003版本做的吗?

应您要求现在上传2003版的文件

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-8-25 11:24 | 显示全部楼层
原创-转码
Public Function zm(t)
'ɪ'nɪʃəlaɪz
  If Len(t) = 0 Then zm = "": Exit Function
  If InStr(t, "&#") Then
    V = Split(t, "&#")
    For i = 1 To UBound(V)
      m = m & ChrW(Left(V(i), 3)) & Mid(V(i), 5)
    Next
    m = V(0) & m
  Else
    m = t
  End If
  zm = "[" & m & "]"
End Function

评分

2

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-8-25 20:00 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-8-25 20:46 | 显示全部楼层
转码优化
Public Function zm(t)
  Dim V, T1, m
  'ɪ'nɪʃəlaɪz
  If Len(t) = 0 Then zm = "": Exit Function
  If InStr(t, "&#") Then
    V = Split(t, "&#")
    For i = 1 To UBound(V)
      T1 = Split(V(i), ";")(0)
      m = m & ChrW(T1) & Mid(V(i), Len(T1) + 2)
    Next
    m = V(0) & m
  Else
    m = t
  End If
  zm = m
End Function

评分

2

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-8-25 20:58 | 显示全部楼层
英语单词VBA等等
英语单词VBA.rar (137.73 KB, 下载次数: 221)

评分

2

查看全部评分

TA的精华主题

TA的得分主题

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

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-8-27 10:08 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
'当前单元格高亮
Private Sub Worksheet_SelectionChange(ByVal Target As Range) '当前单元格高亮
   Dim JGD As Shape, Tr, Tc, TL, Tt, Tw, Th, Col
   If Target.CountLarge > 1 Then Exit Sub
   Tr = Target.Row: Tc = Target.Column: TL = Target.Left
   Tt = Target.Top: Tw = Target.Width: Th = Target.Height
   On Error Resume Next
   ActiveSheet.Shapes("yuan").Delete         '删除特定名称的图形
   With ActiveSheet.Shapes.AddShape(msoShapeRectangle, TL, Tt, Tw, Th)
       .Line.Visible = 1 'msoFalse           '设置为无轮廓
       .Fill.Visible = msoTrue               '设置填充(fill)颜色,如果=msofalse,则为无颜色填充
       .Fill.ForeColor.RGB = RGB(0, 255, 0)  '设置颜色
       .Fill.Transparency = 0.6              '设置透明度,数字愈大透明度越高
       .Name = "yuan"
   End With
End Sub

评分

2

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-8-27 10:11 | 显示全部楼层
'当前单元格高亮
当前单元格高亮和聚光灯-V2.2.rar (26.88 KB, 下载次数: 276)

评分

2

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-8-29 23:35 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
Public Function 时间戳()
'  时间戳 = DateDiff("s", 25569, Now - 1 / 3) '时间戳10
'  时间戳 = DateDiff("s", "01/01/1970", Now - 1 / 3) '时间戳10
' 时间戳 = DateDiff("s", "01/01/1970 08:00:00", Now) '时间戳10
   时间戳 = (Now - 25569 - 1 / 3) * 86400
'"时间戳13:" & Int(((Date - 25569 - 1 / 3) * 86400 + Timer) * 1000)
End Function

评分

2

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-9-7 19:09 | 显示全部楼层
本帖最后由 YZC51 于 2019-9-8 15:31 编辑

'//本程序参考 兰色幻想 老师的 Wlookup 函数制作。在此致谢!2019-09-08 05:23:13

模拟微软最新 Xlookup 函数

Function Xlookup(v, vY, vh, Optional m = 0, Optional n = 1) '匹配未完成
Dim arr, arr1, arr2()
Dim k As Integer
On Error Resume Next
If Len(v) = 0 Then v = 0
arr = vY
arr1 = vh
    If UBound(arr1) = 1 Then
        arr1 = Application.Transpose(arr1)
        arr = Application.Transpose(arr)
    End If
    ReDim arr2(1 To 1)
    For x = 1 To UBound(arr1)
        If m = 2 Then
            flg = arr(x, 1) Like v     '通配符匹配
        ElseIf m = 3 Then
            flg = InStr(arr(x, 1), v)  '包含匹配
        Else
            flg = (arr(x, 1) = v)      '精确匹配
        End If
        If flg And n = 1 Then
            If UBound(arr1, 2) > 1 Then
                Xlookup = arr1(x, 1)
                With Application.ThisCell
                    For j = 1 To UBound(arr1, 2) '自动填充
                        If .Offset(, j) = "" Then s = Null Else s = "*"
                            .Offset(, j).Replace s, arr1(x, j + 1)
                    Next j
                End With
            End If
            Xlookup = arr1(x, 1)
            Exit Function
        Else
            If arr(x, 1) = v Then
                k = k + 1
                ReDim Preserve arr2(1 To k)
                arr2(k) = arr1(x, 1)
            End If
        End If
    Next x
    If Abs(m) = 1 Then
        Xlookup = JS(v, vY, vh, m)
    Else
        If n = 0 Then Xlookup = Join(arr2, ",")
        If n < 0 Then Xlookup = arr2(k)
        If n > 0 Then Xlookup = arr2(n)
    End If
End Function

Function JS(J1, R1, R2, m) '取上下接近值
Dim Jarr1, Jarr2
Dim x
    Jarr1 = R1
    Jarr2 = R2
    For x = 1 To UBound(Jarr1)
        If x + 1 > UBound(Jarr1) Then
            JS = Jarr2(x, 1)
            Exit Function
        ElseIf J1 >= Jarr1(x, 1) And J1 < Jarr1(x + 1, 1) Then
            If m = -1 Then JS = Jarr2(x, 1) Else JS = Jarr2(x + 1, 1)
            Exit Function
        End If
    Next x
End Function

评分

3

查看全部评分

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

本版积分规则

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

GMT+8, 2024-11-16 00:53 , Processed in 1.061765 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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