【发布时间】:2021-02-28 15:01:41
【问题描述】:
我正在尝试搜索三个字母的目标词并将它们替换为更正后的三个字母词。
例如,
CHI - 作为单个单元格条目(带有连字符)被替换为“ORD -”。
在某些情况下,目标词是单元格中词对的一部分,例如CHI - SHA。
下面的代码记录了这些情况。
我意识到当单元格是例如XIANCHI - SHA 它还会更正导致 XIANORD - SHA 的“CHI -”部分。
如果目标字母是较长单词的一部分,我如何限制 fndlist 跳过它们?
样本
- CHI -(单个单元格输入)转换为 ORD -
- CHI - PVG(一个电池)转换为 ORD - PVG
- XIANCHI - PVG 转换为 XIANORD - PVG (错误)
如果我使用 lookat:xlwhole,代码只会捕获 CHI - 大小写而不是对,但如果我使用 xlpart,它将捕获对 CHI - PVG,但还会更正它在该元素中找到的任何单词。
Sub Adjust_Airport_Codes2()
Dim sht As Worksheet
Dim fndList As Variant
Dim rplcList As Variant
Dim x As Long
fndList = Array("BUE -", "CHI -", "DCA -", "HOU -", "LGA -", "NYC -", "WAS -", "AEJ -", "BUS -", "CGH -", "CPS -", "DGM -", "EHA -", "EHB -", "EHF -", "FOQ -", "FQC -", "JBN -", "LCY -", "LGW -", "LIN -", "LON -", "MIL -", "MOW -", "NAY -", "ORY -", "OSA -", "PAR -", "PUS -", "QPG -", "RIO -", "SAO -", "SAW -", "SDU -", "SDV -", "SEL -", "PVG -", "TSF -", "TYO -", "UAQ -", "VIT -", "YMX -", "YTO -", "ZIS -", "CNF -", "HND -", "IZM -", "JKT -", "LTN -", "MMA -", "UXM -", "VCE -", "VSS -")
rplcList = Array("EZE -", "ORD -", "IAD -", "IAH -", "JFK -", "JFK -", "IAD -", "AMS -", "ICN -", "GRU -", "VCP -", "HKG -", "AMS -", "BRU -", "HHN -", "HKG -", "FRA -", "PRG -", "LHR -", "LHR -", "MXP -", "LHR -", "MXP -", "SVO -", "PEK -", "CDG -", "KIX -", "CDG -", "ICN -", "SIN -", "GIG -", "GRU -", "IST -", "GIG -", "TLV -", "ICN -", "SHA -", "MXP -", "NRT -", "EZE -", "BIO -", "YUL -", "YYZ -", "HKG -", "BHZ -", "NRT -", "ADB -", "CGK -", "LHR -", "MMX -", "FRA -", "MXP -", "MHG -")
'Loop through each item in Array lists
For x = LBound(fndList) To UBound(fndList)
'Loop through each worksheet in ActiveWorkbook
For Each sht In ActiveWorkbook.Worksheets
sht.Cells.Replace What:=fndList(x), Replacement:=rplcList(x), _
LookAt:=xlpart, SearchOrder:=xlByRows, MatchCase:=True, _
SearchFormat:=False, ReplaceFormat:=False
Next sht
Next x
End Sub
【问题讨论】:
标签: excel vba find-replace