登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Oh! I see you!

Hi! ppmm~~

 
 
 

日志

 
 

[Excel VBA] 提取字符串中数字、中文、英文字符的自定义函数(修正版)  

2009-07-31 03:19:59|  分类: Excel |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

本文链接:http://oicu.cc.blog.163.com/blog/static/123039471200963131959304/

分类:Excel VBA 编程

请根据具体要求编辑宏代码应用。

 

修正版:

Sub Sample()
' by oicu#lsxk.org 2009/7/31
' 数据在第一列(A列),结果放在第二列(B列)之后
' 提取数字时设置不带小数点的数值格式防止出现1.21314E+12这种科学记数法
' 设置列宽自动适应数据长度
' 修正全字母时提取得到数字0
' 英文标点不会提取出来的

    Dim i As Integer
    For i = 1 To WorksheetFunction.CountA(Columns(1))
   
        ' 默认为提取数字
        Cells(i, 2).NumberFormatLocal = "0_ "
        Cells(i, 2).Value = GetNum(Cells(i, 1).Value)
        ' Cells(i, 2).Value = GetNum(Cells(i, 1).Value, 0)
       
        ' 提取中文及中文标点
        Cells(i, 3).Value = GetNum(Cells(i, 1).Value, 1)
       
        ' 提取字母
        Cells(i, 4).Value = GetNum(Cells(i, 1).Value, 2)

    Next i
    Columns("B:B").EntireColumn.AutoFit
    Columns("C:C").EntireColumn.AutoFit
    Columns("D:D").EntireColumn.AutoFit
End Sub

Function GetNum(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)
        Select Case n
            Case 0
                Bol = s Like "#"
                ' Bol = s Like "[0-9]"
            Case 1
                Bol = Asc(s) < 0
                ' 中文为负数,不要用AscB或者AscW
            Case 2
                Bol = s Like "[a-zA-Z]"
                ' zA之间不要带半角逗号
            Case Else
                Exit Function
        End Select
        If Bol Then MyString = MyString & s
    Next i
   
    If MyString <> "" Then _
        GetNum = IIf(n = 1 Or n = 2, MyString, Val(MyString))

End Function


 

Excel中用函数提取字符串中的数字的方法请看另一篇日志

http://oicu.cc.blog.163.com/blog/static/1230394712009852119363/

 

  评论这张
 
阅读(6751)| 评论(0)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018