用unicode字符替换字符

时间:2017-06-02 06:52:08

标签: vba unicode

我正在使用大型数据文件。 Excel工作表的B列包含文件名。但是在下载过程中会有2个字符被替换(ä变成+ñ而ö变成+Â。)我需要能够使用这些文件名进行搜索,所以我需要将名称反转回原始名称。

这是我最初的尝试:

Private Sub scandit(n As Long)

Dim i As Long
For i = 2 To n
Dim a As String
Dim b As String
Dim c As String
Dim d As String
a = "+" & ChrW(194) ' +
b = ChrW(132) 'ä
c = "+" & ChrW(164) ' +n
d = ChrW(148) 'ö

    If Not IsEmpty(Cells(i, 2).Value) Then
        Cells(i, 2).Value = Replace(Cells(i, 2).Value, c, b)
        Cells(i, 2).Value = Replace(Cells(i, 2).Value, a, d)
    End If
Next i

End Sub

然而,这不起作用。 “+ñ”仅被删除但未被替换。 “+”没有任何反应。

经过一些谷歌搜索后,我发现了这个:

Sub CommandButton1_Click()
    Dim fnd As Range
    With ActiveSheet
        .Cells.Replace what:="+" & ChrW(194), replacement:=ChrW(132), 
lookat:=xlPart
        .Cells.Replace what:="+" & ChrW(164), replacement:=ChrW(148), 
lookat:=xlPart
    End With
End Sub

这与我自己的代码完全相同。

替换应如何工作的示例:sy +Âd+ñ - > syödä

如果有人对如何继续这里有一些想法,我将不胜感激(请注意,我只想替换B栏中的单元格。)

1 个答案:

答案 0 :(得分:0)

我刚刚更改了ChrW值,您的代码开始工作

Sub scandit()

Dim i As Long
For i = 2 To 5
Dim a As String
Dim b As String
Dim c As String
Dim d As String
a = "+" & ChrW(194) ' +
b = ChrW(228) 'ä
c = "+" & ChrW(241) ' +n
d = ChrW(246) 'ö

    If Not IsEmpty(Cells(i, 2).Value) Then
        Cells(i, 2).Value = Replace(Cells(i, 2).Value, c, b)
        Cells(i, 2).Value = Replace(Cells(i, 2).Value, a, d)

    End If
Next i

End Sub