如何在重复字符后从Excel中的单元格中拉出字符串?

时间:2017-05-05 20:11:28

标签: excel excel-formula

我有一个具有以下值的单元格:

5661:GRE:08:NAME

我想找一个excel公式,可以帮助我从这个示例中推断出以下值到单独的列/单元格中:5661 GRE 08 NAME

我过去曾使用LENMIDFIND,但这只是为了找到一个"分隔符"与上例中的:类似。当分隔符在单元格中重复多次时,不确定如何解决此问题以查找值。宁愿尝试在公式中解决这个问题而不是使用VBA。

2 个答案:

答案 0 :(得分:5)

将文本用于“数据”选项卡中的列:

第一步:选择分隔命中下一步

enter image description here

第二步:点击其他并将:放入框中。

enter image description here

从这里你可以继续第三步,但它是可选的。第三步允许用户指定限制格式类型。

如果您不关心列保持为General,则单击Finish。

enter image description here

如果你想要一个公式,那么:

=TRIM(MID(SUBSTITUTE($A1,":",REPT(" ",999)),999*(COLUMN(A:A)-1)+1,999))

当您向右/向右拖动时,它将获得下一个单词。

enter image description here

答案 1 :(得分:1)

假设您的数据位于单元格A1中, 运行第二个宏

子文本() 调用Extract_Any_Think(Range(“ a1”),“ \ w +”) 结束

Option Explicit

Sub Extract_Any_Think(st As Range, Patt$)
  Dim Obj As Object, i%
  Set Obj = CreateObject("Vbscript.RegExp")
  With Obj
   .Pattern = Patt
   .Global = True
  End With
   If Obj.test(st) Then
     For i = 0 To Obj.Execute(st).Count - 1
     st.Offset(, i + 2) = Obj.Execute(st)(i).Value
     Next
   End If
End Sub

'+++++++++++++++++++++++++++++++++

Sub text()
Call Extract_Any_Think(Range("a1"), "\w+")
End Sub