还在手动提取数据?Excel自定义函数快速实现数据提取

还在手动提取数据?Excel自定义函数快速实现数据提取

数据提取是Excel操作中经常碰到的事情,相信很多小伙伴都碰到过乱七八糟的Excel文档,中英文数字全部混合在同一个单元格中,不是顺序位置错了,就是长度不一样,无论是使用Ctrl+E或者分列都没办将数据提取出来,其实这些都可以利用VBA快速解决。

31.5K

更新日期:2020-07-20 分类标签: 平台:

17KB 0 人已下载 手机查看

Hi,大家好,这里是芮和。

Excel中最常见的数据不外乎为「中文」「数字」和「英文」,今天我们就来看下如何快速将同一个单元格中的中英文和数字分别提取出来,如下:

还在手动提取数据?Excel自定义函数快速实现数据提取

我们可以观察下数据的规律,找了半天其实发现没有任何规律,长短不一、位置不一,甚至最后一条数据中的英文出现了2次,并且还在不同位置。

这种数据是绝大多数Excel使用者厌恶至极的,除了手动提取,好像并没有很好的解决办法。今天我们就来看下如何利用VBA的自定义函数功能,来快速解决这个噩梦。

选择「开发工具」选项卡中的「代码」下的「Visual Basic」,这个时候Excel会打开一个窗口,我们选择「插入」选项卡下的「模块」,将代码复制到模块中:

Function dealData(Srg As String, Optional n As Integer = False)
    Dim i As Integer
    Dim s, MyString As String
    Dim Bol As Boolean
    For i = 1 To Len(Srg)
        s = Mid(Srg, i, 1)
        '提取中文
        If n = 1 Then
            Bol = Asc(s) < 0
        '提取英文
        ElseIf n = 2 Then
            Bol = s Like "[a-z,A-Z]"
        '提取数字
        ElseIf n = 0 Then
            Bol = s Like "#"
        End If
        If Bol Then MyString = MyString & s
    Next
    dealData = IIf(n = 1 Or n = 2, MyString, Val(MyString))
End Function
还在手动提取数据?Excel自定义函数快速实现数据提取

跟我们前几期分享的VBA自定义插件不太一样,VBA中的模块是以函数的功能实现的,这里其实我们自定义了一个函数dealData,语法如下:

=dealData(需要处理的数据, [类型])

代码是自定义的,所以类型就根据代码进行相应配置。在这里类型为可选值,默认不填写时表示返回所有数字,等于1的时候返回所有中文,等于2的时候返回所有英文

接着我们就可以在我们的单元格中使用这个自定义的函数了。

还在手动提取数据?Excel自定义函数快速实现数据提取

现在我们就通过我们自定义的函数来快速实现我们的功能了,这就是VBA最强大的地方,碰到传送Excel函数没办法完成我们任务的情况,或者只能以手动方式进行操作的时候,VBA都能轻松完成任务。

今天关于VBA自定义函数的分享就到这里了,关于VBA的教程我们会在7月份发布相关的视频教程,你还有什么其他想学的 Excel 技巧可以在下方留言哦~

相关导航

暂无评论

暂无评论...