我的 excel 文件中有数千条数据,它们都是从各个网站抓取的数据,最初存储在 CSV 文件中,然后迁移到 Excel 中。这些数据供我的网络服务器使用。
现在我的问题是horizontal tabs
隐藏在众多之中spaces
,它们给我的网络服务器带来了严重的问题。
我在这里举一个例子来澄清一下:
Excel 中的数据:“这是一个牢房”
编码后的数据可用作 URL 参数: "这是一个单元格"
你可以清楚地看到,中间的一个空格被编码为%09,这代表水平制表符。这导致我的服务器出现严重问题,我需要识别并替换它。
那么,我该如何找到水平制表符在 Excel 中?
答案1
Burgi 的答案可以解决问题,但是您不必使用充满公式的工作表复制整个数据集,而是可以通过几行脚本实现相同的效果。
Sub ReplaceTabs()
Dim c As Range
For Each c In ActiveCell.CurrentRegion
c.Value = Replace(c.Value2, Chr(9), Chr(32))
Next c
End Sub
有几种方法可以遍历所有相关单元格(例如,您可以只使用等来定位特定列ActiveSheet.Range("A:A")
,或者选择有问题的单元格并使用Selection.Cells
),但如果单元格是连续的并且选项卡可能位于任何单元格中,则此方法会起作用。
它不是超级快(在我的计算机上 200,000 个单元大约需要 10 秒)但应该足够快。
如果这是一项常见任务,那么您可以将其构建到导入脚本中。
答案2
该代码应该适合您:
=SUBSTITUTE(A1,CHAR(9),CHAR(32))
上述公式用替换CHAR(9)
给CHAR(32)
定字符串中的所有实例。
CHAR(9)
- 制表符CHAR(32)
- 空格字符
看到这个维基百科文章用于 Windows 使用的查找表。
答案3
为了加快 Lunatik 的回答,在宏工作时关闭/打开更新。
Dim tmp As Boolean
tmp = Application.ScreenUpdating
' this stores current value
Application.ScreenUpdating = False
Dim c As Range
For Each c In ActiveCell.CurrentRegion
c.Value = Replace(c.Value2, Chr(9), Chr(32))
Next c
Application.ScreenUpdating = tmp