excel - 两次使用“TextToColumns”时不需要的更改
问题描述
我有以下问题。
我的一张表包含一列,其中包含存储为文本的值(例如,值作为 1,22 存储为文本)。目前我使用以下代码将这些条目转换为值:
Sub Convert()
Range(Cells(2, "K"), Cells(Rows.Count, "K").End(xlUp)).TextToColumns DataType:=xlFixedWidth, DecimalSeparator:=","
End Sub
如果我在结果很好后运行宏。但是,如果我第二次运行宏(在我已经使用上面显示的代码将文本转换为值之后)。这些数字的格式从作为小数点分隔符的逗号“,”变为点“。” 作为小数分隔符(例如 1,22 --> 1.22)。
这是一个问题,因为我的区域使用逗号。
有谁知道如何防止这种情况发生?
亲切的问候阔边帽
这里截图:
解决方案
您的原始数据是字符串,运行TextToColumns
会将它们转换为数字。第二次运行TextToColumns
时,Excel 需要先将这些数字转换为字符串。
我只能猜测这种转换的内部逻辑,但如果这不使用任何区域设置,我也不会感到惊讶。
无论如何,我会说TextToColumns
在数值上使用命令不是一个好主意。使用过滤器仅获取包含文本的单元格:
Dim r As Range
set r = Range(Cells(2, "K"), Cells(Rows.Count, "K").End(xlUp))
On Error Resume Next ' To prevent runtime error "No cells found"
Set r = r.SpecialCells(xlCellTypeConstants, xlTextValues)
If err.Number = 1004 then exit sub
On Error Goto 0
r.TextToColumns DataType:=xlFixedWidth, DecimalSeparator:=","
推荐阅读
- c# - 当我死时,一颗心不会被移走,但不会有错误
- laravel - Laravel 输入循环
- vue.js - 如何将其他组件应用到 Vue Router 的一个路径
- javascript - 使用Javascript的Json中特定属性的总和
- airflow - 气流调度程序如何配置检查新文件的间隔?
- wordpress - 如何在管理员中使用复选框在 dropdwon 中显示 wp 标签
- windows - 从 DLL 获取导入表
- python - 反转字典中的键值(Python 中的高级反转字符串)
- javascript - 执行onload时如何更改变量
- laravel - 如何使用 Vue 在 Laravel 中上传文件 PDF