从Excel中的航班号字符串中提取航空公司

时间:2018-09-12 15:19:01

标签: sql regex excel

我在从字符串格式中提取两个字符的代码时遇到问题:

"VA198-VA200-VA197" 

我只想获取字符串:

"VA-VA-VA"

我拥有的数据也不只是一种格式,有些数据就像:

"DL123-DL245" 

"DL123-VA345-HU12-OZ123"

有人知道如何在excel中快速完成吗?谢谢。

4 个答案:

答案 0 :(得分:1)

A1 中使用数据,在 B1 中输入数组公式:

=TEXTJOIN("",TRUE,IF(ISERR(MID(A1,ROW(INDIRECT("1:100")),1)+0),MID(A1,ROW(INDIRECT("1:100")),1),""))

enter image description here

注意:

该公式去除所有数字字符,仅保留字母和破折号。

数组公式必须使用 Ctrl + Shift + Enter 输入,而不仅仅是 Enter 键。如果正确完成此操作,则公式将显示在公式栏中,并带有大括号。

答案 1 :(得分:0)

您可以通过几种方法来解决此问题,具体取决于它们在字符串中可能有多少段。如果我们假设您的航班号在A1中:

First Segment: =LEFT(A1,2)
Second Segment: =MID(A1,FIND("-",A1)+1,2)
Third Segment: =MID(A1,FIND("-",A1,FIND("-",A1)+1)+1,2)

然后可以将三个表达式连接在一起,并添加带有条件的第四个表达式。问题在于,根据您的信息,您最多可以有1到4个(至少)名称,这意味着您将需要一个有条件的名称:

Second Segment: =IF(ISERR(FIND("-",A1)),"",MID(A1,FIND("-",A1)+1,2))

添加分隔符后,我们最多可以得到以下四个示例:

=CONCATENATE(LEFT(A1,2),IF(ISERR(FIND("-",A1)),"",CONCATENATE("-",MID(A1,FIND("-",A1)+1,2))),IF(ISERR(FIND("-",A1,FIND("-",A1)+1)),"",CONCATENATE("-",MID(A1,FIND("-",A1,FIND("-",A1)+1)+1,2))),IF(ISERR(FIND("-",A1,FIND("-",A1,FIND("-",A1)+1)+1)),"",CONCATENATE("-",MID(A1,FIND("-",A1,FIND("-",A1,FIND("-",A1)+1)+1)+1,2))))

这将在一个字段中为您提供一切。

答案 2 :(得分:0)

这里是VBA类型的答案。假定所有字符串的结构都相同。含义两个字母后跟数字,并用“-”分隔。如果这样的字符串是A1,并且您要将结果写入B1:

Sub BreakStrings()
    d = Split(Range("A1"), "-")
    For i = LBound(d) To UBound(d)
        d(i) = Left(d(i), 2)
    Next i
    strg = Join(d, "-")
    Range("B1") = strg
End Sub

enter image description here

答案 3 :(得分:0)

用户定义函数(UDF):

Function GetVal(cell)
    With CreateObject("VBScript.RegExp")
        .Global = True: .Pattern = "(\w{2})(.+?)(?=-|$)"
        GetVal = .Replace(cell, "$1")
    End With
End Function