分享

VBA学习与实践——自定义字符和数字提取函数

 L罗乐 2018-10-07

   如何将单元格的文字和数字提取出来单独储存在呢,网上提供的一种简单的方法是利用Excel的智能填充功能,(Ctr E键),操作如下:

   这是一种最方便最快捷的方法,不过这种方法只有Excel2013及以上版本才支持,当然利用Excel的自带的函数也是可以解决的,但往往是要用到多个函数的嵌套,这对于对函数不太熟练的同学是不太友好的,于是我打算用VBA的方法自定义一个函数直接用来提取字符和数字,不用费力气使用多个函数的嵌套了,这样使用起来就方便多了。

    首先自定义一个数字提取函数,函数代码如下:

Public Function Numpick(str As String)

  Dim i As Integer

  Dim arr(), arr1()

  Length = Len(str)

  ReDim arr(1 To Length), arr1(1 To Length)

  For i = 1 To Length

      arr(i) = Mid(str, i, 1)

   '利用循环和Mid函数将字符串分割成单个字符

      If IsNumeric(arr(i)) = True Then

         '判断字符是否为数字

         arr1(i) = arr(i)

      End If

  Next

   Numpick = Join(arr1, '')

   '将是数字的字符连接成一个字符串

End Function


   这里主要利用了MID函数将单元格中的字符串分割成单个字符,然后用IsNumeric函数对单个字符逐一判断是否为数字,如果为数字则储存在数组arr1中,最后利用Join函数将储存在数组arr1中的字符连接成一个新的字符串作为自定义Numpick函数的返回值。而对于字符提取函数来说,只要在以上代码中将If IsNumeric(arr(i)) = True 改为If IsNumeric(arr(i)) = False即可,其他语句都不变(除了函数名将Numpick改为Charpick之外),表示只要字符不是数字,则将该字符储存在数组arr1中,然后将所有不为数字的字符连接成一个字符串返回给Charpick函数。Charpick函数的完整代码如下:


Public Function Charpick(str As String)

  Dim i As Integer

  Dim arr(), arr1()

  Length = Len(str)

  ReDim arr(1 To Length), arr1(1 To Length)

  For i = 1 To Length

      arr(i) = Mid(str, i, 1)

  '利用循环和Mid函数将字符串分割成单个字符

      If IsNumeric(arr(i)) = False Then

         '判断字符是否为数字

         arr1(i) = arr(i)

      End If

  Next

   Charpick = Join(arr1, '')

   '将是数字的字符连接成一个字符串

End Function

  

   在Excel代码窗口中新建一个模块将代码复制到Excel代码窗口中,我们就可以在这个工作簿中使用这两个函数了(打开Excel代码窗口的快捷键Alt F11,笔记本Fn Alt F11)

   如果想要在所有的工作簿中使用这两个函数,我们还需要将这个工作簿另存为一个后缀名为xla或者xlam的加载宏工作簿,然后我们要在其他工作簿中使用这两个函数时就可以使用加载宏的办法。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多