替换字符串中的所有外来字符

时间:2014-07-31 15:58:34

标签: excel substitution

在Microsoft Excel中,我有一个包含我正在销售的产品名称的单元格。那个细胞有可能含有外来的口音。我想做的是用最近的英语等价物替换外国字符。在这种情况下,我使用以下内容创建公式:

=SUBSTITUTE(G618,"ô","o")

G618包含“Nivôse”时,将返回Nivose。但是,由于Excel限制您不断地将SUBSTITUTE()函数嵌套在一起,我想知道是否有另一个函数或方法来编写一个能够实现相同功能的函数?

1 个答案:

答案 0 :(得分:3)

如果我的等效性正确,则以下用户定义函数应该进行适当的替换。但你应该检查它。

编辑:我在第一次尝试中错过了一些。所以现在编辑。

要输入此用户定义函数(UDF), alt-F11 将打开Visual Basic编辑器。 确保在Project Explorer窗口中突出显示您的项目。 然后,从顶部菜单中选择“插入/模块” 将下面的代码粘贴到打开的窗口中。

EDIT2:已修改为允许替换为两个字符(例如:ÆwithAE)或没有字符

要使用此用户定义函数(UDF),请输入类似

的公式

<强> = ReplaceAccentedCharacters(A4)

在某个单元格中。

Option Explicit
Function ReplaceAccentedCharacters(S As String) As String
    Dim I As Long

With WorksheetFunction
For I = Len(S) To 1 Step -1
    Select Case Asc(Mid(S, I, 1))
        Case &HC0 To &HC5
            S = .Replace(S, I, 1, "A")
        Case &HC6
            S = .Replace(S, I, 1, "AE")
        Case &HE0 To &HE5
            S = .Replace(S, I, 1, "a")
        Case &HE6
            S = .Replace(S, I, 1, "ae")
         Case &HC7
            S = .Replace(S, I, 1, "C")
        Case &HE7
            S = .Replace(S, I, 1, "c")
        Case &HD0
            S = .Replace(S, I, 1, "D")
        Case &HC8 To &HCB
            S = .Replace(S, I, 1, "E")
        Case &HE8 To &HEB
            S = .Replace(S, I, 1, "e")
        Case &HCC To &HCF
            S = .Replace(S, I, 1, "I")
        Case &HEC To &HEF
            S = .Replace(S, I, 1, "i")
        Case &HD1
            S = .Replace(S, I, 1, "N")
        Case &HF1
            S = .Replace(S, I, 1, "n")
        Case &HD2 To &HD6
            S = .Replace(S, I, 1, "O")
        Case &HF2 To &HF6, &HF0
            S = .Replace(S, I, 1, "o")
        Case &HD9 To &HDC
            S = .Replace(S, I, 1, "U")
        Case &HF9 To &HFC
            S = .Replace(S, I, 1, "u")
        Case &HD7
            S = .Replace(S, I, 1, "x")
        Case &HDD
            S = .Replace(S, I, 1, "Y")
        Case &HFD, &HFF
            S = .Replace(S, I, 1, "y")
    End Select
Next I
End With

ReplaceAccentedCharacters = S

End Function