【Excel小技巧】 文本数字格式互换

【Excel小技巧】 文本数字格式互换

在处理数据的时候,有些数据的格式是采用文本格式的。这些文本格式的数字并不能帮忙做运算。因此,在我在数据预处理时,通常都要将所有文本格式的数字,全部切换成数字格式。
PS: 这里跳过怎样找到文本格式的数字,本文主要讲的就是如何切换,以及其中一些方法的介绍。以下是我通常会用到的,并且是已知道的方法。

快速判断当前数据是文字还是数字的方法: 文本靠左(边),数字靠右(边)。


数字 -> 文本
1# 函数Text
2# 添加空字符串
3# 单元格格式(快捷键:Ctrl+1)
4# 分列(固定宽度)
5# VBA(通杀)

文本 -> 数字
1# 点击感叹号提示,转换为数字
2# 函数 Value,Numbervalue
3# 单元格格式(快捷键:Ctrl+1)
4# 分列(直接确认)
5# VBA(通杀)

以上并非所有的方法都会提及。但是,从中可以知道:解决同一类的方法,要么用函数,要么取巧(对字符串修改),要么是工具栏的基本用法,还有就是几乎万能的VBA了。

Part1 : 数字 -> 文本

数字转文本 几种常用的方法 https://www.zhihu.com/video/1016832873722245120


Part2 : 文本 -> 数字

文本转数字 几种常用方法 https://www.zhihu.com/video/1016842242186670080


常用的转换功能,最厉害的都是 一行一行地进行数据转换 。 如果数据零落分散,而且数据量不少呢? 如果碰到这样的情况,那可以尝试写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            '将数值之前的数字添加上分号