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

VBA代码精选(4):数值转文本格式

(2021-10-13 14:52:04)
标签:

excel

vba

分类: Excel相关
  此系列VBA代码大部来自网络,有部分是自己写的,已实践过,可以使用。我所用系统平台是win10+office365,64位,但绝大部分代码可以用在32位系统中。
  数值转文本,或文本转数值,在数据处理中经常用到,此为数值转文本格式,这个比文本转数值要难一些,网上可用资料不多,此带参数过程上是我自己所写,已证实可用。数值为啥要转为文本格式,这个也很好理解,因为某些情况下只能用数值只能用文本格式出现才可以,如:18位身份证号,如不是文本格式,则身份证号无法正常显示。
以下是数值转文本格式的几种方法(代码可以直接使用)。
1、单列数值转文本(这个比较简单):
Sub 单列数值转文本()                                          '//批量转换,速度快
    Range("C3:C" & Cells(Rows.Count, "a").End(xlUp).row).Select        '//指定范围转文本
    Selection.TextToColumns Destination:=Range("c3"), FieldInfo:=Array(1, 2)
End Sub
2、多列数据转文本(必须是整列,否则出错):
Sub 多列数值转文本整列()         '//批量转换,速度慢
    [a1:b20] = ["'"&a1:b20]                   '//这个不用整列,但行号和列号必须写明,否则出错
    [c:d] = ["'"&c:d]                               '//也可以指定多列,必须是整列
    [j:j] = ["'"&j:j]                                  '//也可以指定整列,必须是整列
End Sub
3、选定范围内数据转文本格式:
Sub 选定数值转文本()                        '//范围选定的情况下数值转文本,数据多时速度慢
    Application.ScreenUpdating = False
    For Each rn In Selection
        rn.Value = "'" & rn.Value
    Next
    Application.ScreenUpdating = True
End Sub
4、单列数值转文本(带参数过程,便于在VBA中直接调用):
Sub z单列数值转文本(line&, 列符$, tt&)             '//指定范围转文本,可以使用,2021.7.8新增
    '***********************************************
    '使用示例:Call z单列数值转文本(10, "b", tt)          '//数值转文本,10指起始行号,"a"是需转换的列号,tt是指取最大行号
    '说明:指定范围转数值,10指起始行号,2是需转换的列号,tt是指取最大行号
    '***********************************************
    Range(Cells(line, 列符), Cells(tt, 列符)).Select               '//指定范围转文本
    Selection.TextToColumns Destination:=Cells(line, 列符), FieldInfo:=Array(1, 2)
End Sub
5、指定范围内数值文本转换(带参数过程,便于在VBA中直接调用,数值和文本可以相互转换):
Sub z指定范围文本数值转换(rng As Range, i%)           '//指定范围文本数值转换,可以使用,2021.8.17
    '***********************************************
    '使用示例:
            Dim rng As Range
            Set rng = Range("b2:b10")
            Call z指定范围文本数值转换(rng,1)             '//选定范围文本转数值,带指定范围参数
            Call z指定范围文本数值转换(rng,2)             '//选定范围数值转文本,带指定范围参数
    '***********************************************
    Application.ScreenUpdating = False
    rng.Select
    For Each rn In Selection
        rn.Value = IIf(i = 1, rn.Value, "'" & rn.Value)
    Next
    Application.ScreenUpdating = True
End Sub


0

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

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

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

新浪公司 版权所有