加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

VBA代码精选(3):文本转数值

(2021-10-13 14:31:28)
标签:

excel

vba

分类: Excel相关
  此系列VBA代码大部来自网络,有部分是自己写的,已实践过,可以使用。我所用系统平台是win10+office365,64位,但绝大部分代码可以用在32位系统中。
  数值转文本,或文本转数值,在数据处理中经常用到,此为文本转数值。为啥要文本转数值,这个很好理解,就是便于数据处理,文本数值是无法参与汇总和统计的。
以下是文本转数值的几种方法(代码可以直接使用)。
1、单列文本转数值(这个比较简单):
Sub 单列文本转数值()                                          '//批量转换,速度快
    Range("C3:C" & Cells(Rows.Count, "a").End(xlUp).row).Select     '//指定范围转数值
    Selection.TextToColumns Destination:=Range("c3"), FieldInfo:=Array(1, 1)
End Sub
2、多列文本转数值(固定范围):
Sub 多列文本转数值固定范围()
     [c3:j55] = [1*c3:j55]                        '//这个方法只能指定范围,且指定范围内必须有数据,否则出错。
End Sub
3、不同范围文本转数值(区域可以联合):
Sub 不同区域范围文本转数值()           
    Dim aa As Range, tt&
    tt = Cells(Rows.Count, "e").End(xlUp).row
    Set aa = Union(Range("k6:y" & tt), Range("ad7:aj" & tt))
    With aa
        .Value = .Value
        .NumberFormat = "0.00"                            '//文本转数值,小数点保留2位
    End With
    ActiveWindow.DisplayZeros = False
End Sub
4、连续列指定位置文本转数值(带参数过程,便于VBA中调用):
Sub z多列文本转数值(line, 起始列$, 终止列$, tt)                     '//批量转换,速度快
    '***********************************************
    '使用示例: Call z多列文本转数值(6, "ad", "aj", tt)      '//多列文本转数值
    '说明:指定范围转数值,6指起始行号,起始列和终止列是需转换的数据的范围的起始列符和终止列符,tt是指取最大行号
    '***********************************************
    Range(Cells(line, 起始列), Cells(tt, 终止列)).Select  '//区域选择
    With Selection
        .Value = .Value
        .NumberFormat = "0.00"                            '//文本转数值,保留2位小数
    End With
    ActiveWindow.DisplayZeros = False
End Sub
Sub z文本转数值s()                 '//多列文本转数值调用实例
    Dim tt&
    tt = Cells(Rows.Count, "b").End(xlUp).row
    Call z多列文本转数值(4, "e", "f", tt)        '//4指起始行号,"e"和"f"是需转换的数据的范围的起始列符和终止列符,tt是指取最大行号
End Sub
5、单列文本转数值(带参数过程,便于VBA调用):
Sub z单列文本转数值(line&, 列符$, tt&)         '//单列文本转数值过程
    '***********************************************
    '使用示例:Call z单列文本转数值(10, "b", tt)            '//文本转数值,10指起始行号,"b"是需转换的列号,tt是指取最大行号
    '说明:指定范围转数值,10指起始行号,2是需转换的列号,tt是指取最大行号
    '***********************************************
    Range(Cells(line, 列符), Cells(tt, 列符)).Select               '//指定范围转数值
    Selection.TextToColumns Destination:=Cells(line, 列符), FieldInfo:=Array(1, 1)
End Sub

Sub z文本转数值()    '//单列文本转数值过程调用实例
    Dim tt&
    tt = Cells(Rows.Count, "b").End(xlUp).row
    Call z单列文本转数值(4, "a", tt)                  '//文本转数值,4指起始行号,"a"是需转换的列号,tt是指取最大行号
End Sub

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有