VBA代码精选(3):文本转数值
2021-10-13 14:31阅读:
此系列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