0

我有从字符串格式中提取两个字符代码的问题,例如:

"VA198-VA200-VA197" 

我只想得到字符串:

"VA-VA-VA"

此外,我拥有的数据不仅仅是一种格式,一些数据就像:

"DL123-DL245" 

或者

"DL123-VA345-HU12-OZ123"

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

4

4 回答 4

1

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

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

在此处输入图像描述

笔记:

该公式去除了所有数字字符,只留下字母和破折号。

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

于 2018-09-12T15:50:12.590 回答
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))))

这将为您提供一个领域的一切。

于 2018-09-12T16:10:46.133 回答
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

在此处输入图像描述

于 2018-09-12T19:18:53.120 回答
0

用户定义函数 (UDF):

Function GetVal(cell)
    With CreateObject("VBScript.RegExp")
        .Global = True: .Pattern = "(\w{2})(.+?)(?=-|$)"
        GetVal = .Replace(cell, "$1")
    End With
End Function
于 2018-09-12T19:33:02.693 回答