新浪博客

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

2021-10-13 14:52阅读:
  此系列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

我的更多文章

下载客户端阅读体验更佳

APP专享