gpt4 book ai didi

excel - 如何在excel中找到隐藏的字符

转载 作者:行者123 更新时间:2023-12-04 21:19:56 30 4
gpt4 key购买 nike

今天我有一个奇怪的问题。 excel中看到的文字和程序看到的不一样。
在我的牢房里,我看到了。

[NOM DU GARANT], une société en commandite constituée et enregistrée en vertu de la loi Canadain (‍‍‍ci‍-après le « garant »)


但是当我将它加载到 VBA 中的变量中并在我的即时窗口中打印出来时,我得到以下信息。

?sText

[NOM DU GARANT], une société en commandite constituée et enregistrée en vertu de la loi Canadain (???ci?­????après le « garant »)


当我在这里粘贴单元格时,这就是我得到的。

[NOM DU GARANT], une société en commandite constituée et enregistrée en vertu de la loi Canadain (‍‍‍ci‍­‍‍‍‍après le « garant »)


当我进入牢房时,我可以删除“隐藏”字符。
我的问题是如何找到/删除/查看这些隐藏字符?
还有一种方法可以缓解这个问题。我假设这些问题来自人们从法语 MS Word 应用程序复制并粘贴到这个 Excel 单元格中(我没有具体证据支持这一点)。

最佳答案

问题是 VBA 编辑器不显示大多数 UNICODE 字符。具体来说,它显示字符的能力仅限于 Windows 代码页 1252(8 字节字符)上的字符。

它可以操纵更高的字符,但它们不会显示在即时窗口(或消息框,就此而言)。

我不确定您为什么觉得需要删除这些字符,但是:

您可以通过一次显示每个字符并转换为标准字符代码和 Unicode 字符代码来确定错误字符。

在 Excel 中,您可以执行以下操作:

A1:  your_text_string
B2: =MID($A$1,ROWS($1:1),1)
C2: =CODE(B2)
D2: =UNICODE(B2)

选择 B2:D2 并根据需要填写。

您可以在 VBA 中执行类似的操作。

您的文本字符串包含十进制代码为 8205 的 Unicode ZWJ(零宽度连接符)字符。因此,尽管这在您的工作表上完全正常,但它转换为 ?在 VBA 编辑器中。

如果您需要删除它们,您可以在工作表上使用
=SUBSTITUTE(A1,UNICHAR(8205),"")

或者,等效的 VBA 代码:
replace([a1],chrw(8205),"")

如果不熟悉,建议网上搜索ZWJ,VBA ChrW函数和 Excel UNICHAR功能。

如果这不是一个孤立的实例,但您需要有一个例程来删除 VBA 编辑器无法显示的任何字符,您可以试试这个:
Option Explicit
Function removeChars(s As String)
Dim i As Long, l As Long, sTemp As String
Dim ch As String

For i = 1 To Len(s)
ch = Mid(s, i, 1)
If AscW(ch) <= 255 Then
sTemp = sTemp & ch
End If
Next i

removeChars = sTemp

End Function

而且,为了证明它有效,这里是 MsgBox 的屏幕截图由原始文本和 removeChars 生成的文本生成上面的UDF:

enter image description here

enter image description here

我不知道它是否会更快,但这是另一个使用正则表达式的 UDF,它也可以做同样的事情:
Option Explicit
Function removeChars(s As String)
Dim RE As Object
Set RE = CreateObject("vbscript.regexp")
With RE
.Pattern = "[^\x00-\xFF]+"
.Global = True
removeChars = .Replace(s, "")
End With

End Function

最后一个 UDF 可以通过使用早期绑定(bind)来加快一点速度,如果您有很多字符串要处理,可以在 VBA 数组中进行。

关于excel - 如何在excel中找到隐藏的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55050217/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com