如何从 Excel 文件中删除零宽度字符?

如何从 Excel 文件中删除零宽度字符?

我有一个包含大量文本的 Excel 文件,我刚刚发现其中包含零宽​​度字符,这些字符无法正常显示。

我正在进行字符串比较,但它们引起了问题。

花了将近一个小时试图找到一种方法来删除它们,但没有找到任何方法。

Linux 终端命令和 JavaScript 替换了我发现的函数,但它们并不适用于我的情况。

我尝试使用 Excel 中的替换功能,但它说没有找到任何要替换的内容。但是,如果我使用“仅查找”并粘贴零宽度字符,它确实会在文本中找到它们。但是替换不起作用。

答案1

发现了一个愚蠢但简单的解决办法。

  1. 选择 Excel 中包含此字符的数据的整个列。
  2. 复制所选内容。保持所选内容为开启状态。暂时不要取消选择。
  3. 将数据粘贴到记事本中。
  4. 使用记事本的替换功能删除所有零宽度字符。
  5. 选择记事本中的所有文本(CTRL + A)并复制。
  6. 将其粘贴回 Excel,覆盖之前选择的内容。

简单!希望这能帮助其他人 :)

答案2

尝试一下这个宏:

Sub deleteNothing()
    Dim rLook As Range
    Dim wf As WorksheetFunction
    Set wf = Application.WorksheetFunction
    For Each r In ActiveSheet.UsedRange
        If Len(r.Value) = 0 And wf.CountA(r) = 1 Then
            If rLook Is Nothing Then
                Set rLook = r
            Else
                Set rLook = Union(rLook, r)
            End If
        End If
    Next r

    If rLook Is Nothing Then
    Else
        rLook.Clear
    End If
End Sub

答案3

我遇到过这种情况,我确实需要使用 VBA 来修复它。对我有用的解决方案是打开立即窗口(按Alt+F11然后Ctrl + G)并运行以下命令,该命令通过用空字符串替换所有零宽度空格(Unicode 字符 8203)来清除它们:

ActiveSheet.UsedRange.Replace What:=ChrW(8203), Replacement:="", LookAt:=xlPart

只是因为您可能想检查是否解决了问题,我在运行之前运行的代码检查了它是否有零宽度空间Debug.Print instr(ActiveCell.Text, ChrW(8203))。当我在执行上面列出的操作之前运行它时Replace,它返回了1,并且在运行之后Replace,它返回了0,所以这是成功的。

相关内容