【Excel小技巧】 文本数字格式互换
在处理数据的时候,有些数据的格式是采用文本格式的。这些文本格式的数字并不能帮忙做运算。因此,在我在数据预处理时,通常都要将所有文本格式的数字,全部切换成数字格式。
PS: 这里跳过怎样找到文本格式的数字,本文主要讲的就是如何切换,以及其中一些方法的介绍。以下是我通常会用到的,并且是已知道的方法。
快速判断当前数据是文字还是数字的方法: 文本靠左(边),数字靠右(边)。
数字 -> 文本
1# 函数Text
2# 添加空字符串
3# 单元格格式(快捷键:Ctrl+1)
4# 分列(固定宽度)
5# VBA(通杀)
文本 -> 数字
1# 点击感叹号提示,转换为数字
2# 函数 Value,Numbervalue
3# 单元格格式(快捷键:Ctrl+1)
4# 分列(直接确认)
5# VBA(通杀)
以上并非所有的方法都会提及。但是,从中可以知道:解决同一类的方法,要么用函数,要么取巧(对字符串修改),要么是工具栏的基本用法,还有就是几乎万能的VBA了。
Part1 : 数字 -> 文本
Part2 : 文本 -> 数字
常用的转换功能,最厉害的都是
一行一行地进行数据转换
。 如果数据零落分散,而且数据量不少呢? 如果碰到这样的情况,那可以尝试写VBA。
实际上就是在选择前做一判断,对选中的单元格进行单元格格式设置(Ctrl+1),或者在数据前面添加分号“'”。
Sub 文本数值转换()
On Error Resume Next
Dim ans As VbMsgBoxResult '让用户选择转换方式,顺带规避退出的选项
ans = MsgBox("如果要将文本转换成数值" & vbCrLf & "请选择“是”" & vbCrLf & "否则,请选择“否”", vbYesNo, "操作选项")
Application.ScreenUpdating = False
If ans = vbYes Then
With Intersect(Selection, ActiveSheet.UsedRange) '仅对选区与已用的区域交集操作
.NumberFormatLocal = "G/通用格式"
.Value = .Value '将文本型的数字转换成数值
End With
Dim cell As Range
For Each cell In Intersect(Selection, ActiveSheet.UsedRange)
If IsNumeric(cell) Then
cell.Value = "'" & cell.Value '将数值之前的数字添加上分号