【问题标题】:Converting Special Characters into alphabet将特殊字符转换为字母
【发布时间】:2013-06-19 06:47:37
【问题描述】:

我有一个包含不同语言名称列的 excel 文件。我需要将此名称转换为标准英语。

例子:

HỒ ĐĂNG TẤN 必须转换为 HO DANG TAN。

NGUYỄN ĐỨC KIÊN - NGUYEN DUC KIEN

ĐOÀN THỊ THANH THẢO- DOAN THI THANH

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    第 1 步:打开 Microsoft Visual Basic for Applications 窗口。

    第二步:点击插入->模块,在模块窗口中输入如下宏。

    Function StripAccent(thestring As String)
    Dim A As String * 1
    Dim B As String * 1
    Dim i As Integer
    
    Const AccChars= "ŠŽšžŸÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðñòóôõöùúûüýÿ"
    Const RegChars= "SZszYAAAAAACEEEEIIIIDNOOOOOUUUUYaaaaaaceeeeiiiidnooooouuuuyy"
    
    For i = 1 To Len(AccChars)
    A = Mid(AccChars, i, 1)
    B = Mid(RegChars, i, 1)
    thestring = Replace(thestring, A, B)
    Next
    StripAccent = thestring
    End Function
    

    第 3 步:然后转到空白单元格并将公式粘贴到单元格中:
    =CheckStringCHAR(InString)
    例如=CheckStringCHAR("ù"),或=CheckStringCHAR(A2)

    字符列表并不详尽。更多http://en.wikipedia.org/wiki/List_of_Latin-script_letters#Letters_with_diacritics

    【讨论】:

    • 也喜欢这个答案...+1
    • @mehow 仍然是一个糟糕的问题有答案。
    • @Rishi Ễ,Ư,Ờ,Ậ,Ị,Ầ,Ă,Ỹ,Đ,Ặ,Ệ,Ố 等。不会转换此字符。即使添加此字符也不考虑作为特殊字符。考虑我提供的第二个示例,还有其他方法可以添加此字符。
    • @user2230817 通常您的问题会被标记为不具建设性并且可能已关闭。这是你的幸运日 - 享受吧!;)
    【解决方案2】:

    只是为了好玩,下面是一个更有效的版本,它在上面粘贴的网络上循环作为答案。

    示例测试结果(10,000 个字符字符串的 100 个循环)。时间是每次调用的毫秒数,从 QueryPerformanceTimer 中获取。

    旧:最小值:57.6 毫秒,平均值:65.4 毫秒

    新:最小值:22.1 毫秒,平均值:24.4 毫秒

    性能改进来自于在每次替换时不创建字符串的新副本,而是使用 Mid$ 语句就地替换字符。

    Public Function StripAccent(ByVal txt As String) As String
        Dim i As Long, j As Long, n As Long
        Const c1 = "ŠŽšžŸÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðñòóôõöùúûüýÿ"
        Const c2 = "SZszYAAAAAACEEEEIIIIDNOOOOOUUUUYaaaaaaceeeeiiiidnooooouuuuyy"
        n = Len(c1)
        For i = 1 To n
            j = 0
            Do
                j = InStr(j + 1, txt, Mid$(c1, i, 1), vbBinaryCompare)
                If j > 0 Then Mid$(txt, j, 1) = Mid$(c2, i, 1) Else Exit Do
            Loop
        Next
        StripAccent = txt
    End Function
    

    【讨论】:

      猜你喜欢
      • 2013-05-31
      • 1970-01-01
      • 2019-12-01
      • 1970-01-01
      • 2013-03-08
      • 2018-05-24
      • 1970-01-01
      • 2015-02-20
      相关资源
      最近更新 更多