【发布时间】:2022-01-27 00:32:24
【问题描述】:
我有一些看起来像这样的数据(超过 400 列):
| year | ID | fake_num1 | fake_num2 | text1 |
|---|---|---|---|---|
| 2019 | 11 | 36 000 | 10'000 | text, 1 |
| 2020 | 12 | -1 275 | 1 000,00 | text 2 |
列 fake_num1 和 fake_num2 存储为文本。我想要实现的是
- 识别那些假数字列
- 使用 for 循环清理数据(例如,删除空格、列、用点替换逗号)
我在第 1 步需要一些帮助。我必须识别列 fake_num1 和 fake_num2,同时避免使用 text1 等列。我正在考虑使用正则表达式,但也许还有另一种解决方案。
我在这里使用了部分代码:SO regexp,但是我不确定如何从那里继续。
Dim strPattern as String: strPattern = "^[0-9]$"
会找到任何以数字开头和结尾的东西,并且只有数字(如果我的理解是正确的)。管理上表所列案例的最佳方法是什么?
【问题讨论】:
-
数据存储在哪里,在应用程序(word,Excel?)一个文本文件中?。如果您使用的是 VBA,那么一个测试字符串以查看它是否仅包含“数字字符”的函数(即字符 0 到 9 以及任何数字格式字符(如“.,-+”字符)可能是一种方法跨度>
-
如果列中的cel值不是数字,这是否意味着该列都是假的?如果是这样,您应该枚举情况以使该值成为数字。哪个是小数分隔符?一个点?
1 000,00应该变成1000.00吗? -
@freeflow 它存储在我导入 Excel 的 csv 文件中。
-
@FaneDuru 小数点分隔符是逗号。千位分隔符有时是空格,有时是撇号。上表列出了这些可能性。
-
@freeflow 你将如何编写正则表达式来处理你提到的内容?