我在从字符串格式中提取两个字符的代码时遇到问题:
"VA198-VA200-VA197"
我只想获取字符串:
"VA-VA-VA"
我拥有的数据也不只是一种格式,有些数据就像:
"DL123-DL245"
或
"DL123-VA345-HU12-OZ123"
有人知道如何在excel中快速完成吗?谢谢。
答案 0 :(得分: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 键。如果正确完成此操作,则公式将显示在公式栏中,并带有大括号。
答案 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
答案 3 :(得分:0)
用户定义函数(UDF):
Function GetVal(cell)
With CreateObject("VBScript.RegExp")
.Global = True: .Pattern = "(\w{2})(.+?)(?=-|$)"
GetVal = .Replace(cell, "$1")
End With
End Function