使用VBA宏查找Excel中希腊字符的替换

使用VBA宏查找Excel中希腊字符的替换,excel,replace,unicode,find,character,Excel,Replace,Unicode,Find,Character,我试图制作一个VBA宏来帮助我清理Excel材料清单中的电子零件描述。它用Trim删除多余的空格,并缩短几个长单词。然而,我不知道如何正确地找到/替换像欧米茄这样的希腊符号。字符代码似乎不起作用。我不确定我是否使用ChrW错误,或者问题是什么 在另一个论坛上,有人建议我需要在代码中添加MatchByte:=True,但它似乎没有帮助或阻碍 通过大量的实验,我发现了部分问题的解决方案。事实证明,当您将µ-微符号(Unicode和ASCII(十六进制)字符代码00B5以及ASCII(十进制)字符代码

我试图制作一个VBA宏来帮助我清理Excel材料清单中的电子零件描述。它用Trim删除多余的空格,并缩短几个长单词。然而,我不知道如何正确地找到/替换像欧米茄这样的希腊符号。字符代码似乎不起作用。我不确定我是否使用ChrW错误,或者问题是什么

在另一个论坛上,有人建议我需要在代码中添加MatchByte:=True,但它似乎没有帮助或阻碍

通过大量的实验,我发现了部分问题的解决方案。事实证明,当您将µ-微符号(Unicode和ASCII(十六进制)字符代码00B5以及ASCII(十进制)字符代码181)的符号粘贴到VBA查找/替换代码中时,它可以非常好地工作。然后宏将完美地查找/替换它

我很困惑,为什么希腊的mu、omega和rho符号不是这样工作的

μ-希腊小写字母MU(Unicode(十六进制)字符代码03BC)

Ω-希腊大写字母OMEGA(Unicode(十六进制)字符代码03A9)

Ω - 欧姆符号(Unicode(十六进制)字符代码2126)

ρ-希腊小写字母RHO(Unicode(十六进制)字符代码03C1)


  • 不要在字符代码周围使用引号(即使用
    ChrW(03C1)
    而不是
    “ChrW(03C1)”
    否则您实际上是在查找字符串
    ChrW(03C1)
    ,而不是它所代表的字符

  • VBA希望代码是十进制而不是十六进制(即
    ChrW(937)
    而不是
    ChrW(03A9)

  • 如果您需要将代码从十六进制转换为十进制,您可以使用几个转换器中的任意一个或联机查找表


  • 不要在字符代码周围使用引号(即使用
    ChrW(03C1)
    而不是
    “ChrW(03C1)”
    否则您实际上是在查找
    ChrW(03C1)
    ,而不是它所包含的字符represents@cybernetic.nomad我试过-选择。替换什么:=ChrW(03A9),替换:=OHM,LookAt:=\uxlpart,SearchOrder:=xlByRows,MatchCase:=False,SearchFormat:=False,\ureplaceformat:=False,但我收到一条错误消息“编译错误:应为:列表分隔符或”这似乎是某种不正确的语法错误。语法错误可能是打字错误的一部分。请记住,您可能仍然需要使用
    MatchByte
    ,正如您在这里的问题中建议的那样,尝试使用十进制而不是十六进制值
    ChrW(937)
    而不是
    ChrW(03A9)
    @controlnetic.nomad哦,哇,这完全行得通。我在哪里查找这些代码?当我选择欧米茄时,937没有显示在插入>符号图表中?如果我选择它,然后选择“ASCII(十进制)”它就会消失。谢谢你的帮助!!ChrW(8486)-欧姆符号-和ChrW(937)-大写欧米茄-两者都能工作,尽管很奇怪,它们都能删除所有欧米茄符号,即使其中一个是欧姆符号,另一个是大写欧米茄。我非常感谢Unicode查找网站链接,它帮助了我:)
    ChrW(&H03C1)
    应该适用于十六进制常量。
    Sub DescriptionFix()
    '
    ' DescriptionFix Macro
    ' Shortens Description by replacing long words and removes excess spaces from the Description Column
    ' Select a column or a portion of a column to run this macro on
    '
        Dim r As Range
    
        With Application.WorksheetFunction
        For Each r In Intersect(Selection, ActiveSheet.UsedRange)
            r.Value = .Trim(r.Value)
        Next r
        Selection.Replace What:="RESISTOR", Replacement:="RES", LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
    
        Selection.Replace What:="ChrW(2126)", Replacement:="OHM", LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, MatchByte:=True, SearchFormat:=False, _
            ReplaceFormat:=False
        Selection.Replace What:="ChrW(03A9)", Replacement:="OHM", LookAt:= _
            xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
    
        Selection.Replace What:="TRANSISTOR", Replacement:="TRANS", LookAt:= _
            xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
        Selection.Replace What:="CRYSTAL", Replacement:="XTAL", LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
        Selection.Replace What:="CAPACITOR", Replacement:="CAP", LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
        Selection.Replace What:="µ", Replacement:="u", LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
    
        Selection.Replace What:="ChrW(03BC)", Replacement:="u", LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            MatchByte:=True, ReplaceFormat:=False
        Selection.Replace What:="ChrW(03C1)", Replacement:="p", LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            MatchByte:=True, ReplaceFormat:=False
    
        Selection.Replace What:="TANTALUM", Replacement:="TANT", LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
        Selection.Replace What:="CERAMIC", Replacement:="CER", LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
        Selection.Replace What:="INDUCTOR", Replacement:="IND", LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
        Selection.Replace What:="FERRITE", Replacement:="FERR", LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
        Selection.Replace What:="GREEN", Replacement:="GRN", LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
        Selection.Replace What:="BLACK", Replacement:="BLK", LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
        Selection.Replace What:="YELLOW", Replacement:="YEL", LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
        Selection.Replace What:="VOLTAGE", Replacement:="VOLT", LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
        Selection.Replace What:="REGULATOR", Replacement:="REG", LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
        Selection.Replace What:="CONNECTOR", Replacement:="CONN", LookAt:=xlPart _
            , SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
        Selection.Replace What:="TRANSFORMER", Replacement:="XFMR", LookAt:= _
            xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
        End With
    End Sub