Excel VBA优化需求:按指定单元格航线条件替换中转机场
Excel VBA:基于航线条件替换目的地单元格值
问题说明
我需要处理Excel工作表,将指定的最终货运目的地单元格替换为对应中转机场。现有代码能把BOG、LIM等目的地替换为CUR,但希望仅当G5单元格包含特定航线(如AMS-CUR)时才执行这个替换。另外,像编号612-70011196对应的目的地要替换为PUJ,而不是CUR。我尝试添加多条件判断时出现编译错误,作为编程新手不知道怎么解决。
原有代码
Dim myRange As Range Dim Mycell As Range Set myRange = Range("D24:D56") For Each Mycell In myRange If Mycell Like "BOG" Or _ Mycell Like "LIM" Or _ Mycell Like "VVI" Or _ Mycell Like "PTY" Or _ Mycell Like "SJO" Or _ Mycell Like "POS" Or _ Mycell Like "CCS" Or _ Mycell Like "BGI" Then Mycell.Value = "CUR" End If Next Mycell
修改后的代码
Dim myRange As Range Dim myCell As Range Dim targetRoute As String ' 获取G5单元格的航线内容 targetRoute = Range("G5").Value Set myRange = Range("D24:D56") For Each myCell In myRange ' 判断G5是否包含目标航线AMS-CUR,满足则替换指定目的地为CUR If InStr(targetRoute, "AMS-CUR") > 0 Then Select Case myCell.Value Case "BOG", "LIM", "VVI", "PTY", "SJO", "POS", "CCS", "BGI" myCell.Value = "CUR" End Select End If ' 处理特殊编号对应的PUJ替换(假设编号在当前单元格左侧第3列,即A列,可根据实际调整偏移量) If myCell.Offset(0, -3).Value = "612-70011196" Then myCell.Value = "PUJ" End If Next myCell
关键说明
- 使用
InStr函数检测G5单元格是否包含目标航线:该函数返回子字符串的起始位置,返回值大于0表示目标航线存在 - 用
Select Case替代多个Or判断,代码结构更清晰,后续添加新目的地也更方便 - 特殊编号的替换逻辑:通过
Offset获取同行的编号单元格(示例中假设编号在A列,即D列向左偏移3列),你可以根据实际的编号列位置调整Offset(0, -3)的参数 - 特殊编号的判断独立于航线条件,确保只要匹配编号就替换为PUJ;如果需要和航线关联,可将此判断嵌套到对应航线的
If块中
内容的提问来源于stack exchange,提问作者Lars de Boo
相关产品推荐
相关产品推荐

