ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > 行业案例 > 经营管理 > 如何用vba代码根据航班代码归属进行航程判断?

如何用vba代码根据航班代码归属进行航程判断?

作者:绿色风 分类:经营管理 时间:2022-08-18 浏览:198
楼主
kevinchengcw
Q: 如何用vba代码根据航班代码归属进行航程判断?
A: 解决思路:
航班代码归属分三种情况:中国、澳新、其他,基于此,利用正则将全部属于中国的航班替换为空,将全部属于澳新的替换为1,其他的替换为2,然后判断得到的字符串规律以分析出结果。

实现代码如下:
  1. Sub test2()
  2. Dim Arr, N&, Str$, Pt1$, Pt2$
  3. With Worksheets("sheet1")  '数据源工作表
  4.     Arr = .[a1].Resize(.Cells(.Rows.Count, 1).End(3).Row, 4).Value  '读取需要判断的数据区内容到数组
  5.     Pt1 = Join(Application.Transpose(.Range("j14:j" & .Cells(.Rows.Count, "j").End(3).Row)), "|")  '组合属于澳新的航班代码字段,用"|"进行分隔,可以直接作为正则的pattern使用
  6.     Pt2 = Join(Application.Transpose(.Range("k14:k" & .Cells(.Rows.Count, "k").End(3).Row)), "|")  '组合属于中国的航班代码字段,用"|"进行分隔,可以直接作为正则的pattern使用
  7. End With
  8. With CreateObject("vbscript.regexp")  '创建正则项目
  9.     .Global = True  '全局有效
  10.     .MultiLine = False '不匹配多行
  11.     For N = LBound(Arr) + 1 To UBound(Arr)  '循环源数据区数据内容
  12.         Str = Trim(Arr(N, 1))  '清除两端可能存在的空格
  13.         If Str <> "" Then  '如果是有效数据,则
  14.             .Pattern = Pt2  '设定匹配所有中国的航班代码替换为空
  15.             Str = .Replace(Str, "")
  16.             .Pattern = Pt1  '设定匹配所有澳新的航班代码替换为1
  17.             Str = .Replace(Str, "1")
  18.             .Pattern = "[^\/\-1]+"  '其他航班代码替换为2
  19.             Str = .Replace(Str, "2")
  20.             .Pattern = "1\-{2,}2|2\-{2,}1"  '匹配第六航权情况
  21.             Arr(N, 2) = IIf(.test(Str), 1, 0)  '匹配成功结果区写入1,否则写入0
  22.             .Pattern = "(^|\/)\-{2,}\d+|\-{3,}|\d+\-{2,}(?=\/|$)"  '匹配国内中转情况
  23.             Arr(N, 3) = IIf(.test(Str), 1, 0)  '匹配成功结果区写入1,否则写入0
  24.             .Pattern = "(\d\-)\1|(\-\d)\2"  '匹配国际以远情况
  25.             Arr(N, 4) = IIf(.test(Str), 1, 0)  '匹配成功结果区写入1,否则写入0
  26.         End If
  27.     Next N
  28. End With
  29. With Worksheets("sheet2")  '指定结果工作表
  30.     .Cells.Clear  '清空内容
  31.     .[a1].Resize(UBound(Arr), UBound(Arr, 2)) = Arr  '写入结果
  32. End With
  33. End Sub
详见附件及素材源帖。


航程判断.rar
2楼
xyf2210
学习了
3楼
水星钓鱼
谢谢分享这个案例
4楼
jianzhanchou
不错
5楼
wise
不错
6楼
老糊涂
学习了

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap