2015-10-16 25 views
0

我有三个数据在一个单元格中,我想分开。现在我的细胞是这个样子的所有不同的位置,电子邮件和电话号码:拆分不一致的数据

enter image description here

我想我的数据是这样的:

enter image description here

我要找对于任何类型的Excel公式或VBA代码来使这成为可能。我想也许MID,LEFT,RIGHT和FIND的某种组合会起作用,但我似乎无法做到。

+0

有每片数据之间的分隔符? – laylarenee

回答

0

好的。这些都是很长的公式,所以最好复制并粘贴它们。

假设您的数据从单元格A2开始。

在单元格B2,输入此公式:

=SUBSTITUTE(A2,MID(A2,FIND("|",SUBSTITUTE(A2," ","|",LEN(A2)-LEN(SUBSTITUTE(A2," ",""))-3)),99),"") 

在小区C2中,输入以下公式:

=SUBSTITUTE(MID(A2,FIND("|",SUBSTITUTE(A2," ","|",LEN(A2)-LEN(SUBSTITUTE(A2," ",""))-3))+1,99),MID(A2,FIND("|",SUBSTITUTE(A2," ","|",LEN(A2)-LEN(SUBSTITUTE(A2," ",""))-2)),99),"") 

在单元格D2,输入此公式:

=SUBSTITUTE(MID(A2,FIND("|",SUBSTITUTE(A2," ","|",LEN(A2)-LEN(SUBSTITUTE(A2," ",""))-2))+1,99),MID(A2,FIND("|",SUBSTITUTE(A2," ","|",LEN(A2)-LEN(SUBSTITUTE(A2," ",""))-1)),99),"") 

在单元格E2,输入此公式:

=MID(A2,FIND("|",SUBSTITUTE(A2," ","|",LEN(A2)-LEN(SUBSTITUTE(A2," ",""))-1))+1,99) 

现在选择范围B2:E2并向下复制,只要您需要。

就是这样。

+0

这完美的作品!谢谢! – eee8036

+0

不客气! –

0

VBA版本(在A列中的所有文本)

Option Explicit 

Public Sub customSplit() 
    Dim part1, part2, part3, cel As Range, v As Variant, i As Long 

    With ActiveSheet.UsedRange 
     v = .Columns("A:E") 
     For i = 1 To ActiveSheet.UsedRange.Rows.Count 
      If Len(v(i, 1)) > 0 Then 
       part1 = InStr(v(i, 1), "@") 
       If part1 > 0 Then 
        part2 = InStrRev(v(i, 1), " ", part1) 
        part3 = Split(Right(v(i, 1), Len(v(i, 1)) - part2)) 
        If UBound(part3) = 3 Then 
         v(i, 2) = Left(v(i, 1), part2 - 1) 
         v(i, 3) = part3(0) 
         v(i, 4) = part3(1) 
         v(i, 5) = part3(2) & " " & part3(3) 
        End If 
       End If 
      End If 
     Next 
     With .Columns("A:E") 
      .Value = v 
      .AutoFit 
     End With 
    End With 
End Sub 

行总数:1,048,576;持续时间:13.625秒

样品结果:

Associate Professor [email protected] 777-123-4567 GWC 123   Associate Professor   [email protected] 777-123-4567 GWC 123 
Business Operation Specialist [email protected] 777-456-7890 GWC 456 Business Operation Specialist [email protected] 777-456-7890 GWC 456 
Associate Professor jane.doeexample.com 777-123-4567 GWC 124 
Business Operation Specialist [email protected] 777-456-7890 457 
Associate Professor [email protected] 777-123-4567 GWC 125   Associate Professor   [email protected] 777-123-4567 GWC 125 
Associate Professor [email protected] 777-123-4567 GWC 124   Associate Professor   [email protected] 777-123-4567 GWC 124 
Business Operation Specialist [email protected] 777-456-7890 GWC 457 Business Operation Specialist [email protected] 777-456-7890 GWC 457 
+0

感谢您的代码!在设置part2 = InStrRev时发生错误...说“运行时错误'5':无效的过程调用或参数” – eee8036

+0

源数据不包含“@”符号时引发该错误(电子邮件地址)。我添加了验证来检查“word x N +”的源模式“+ email +”“+ phone +”“+ word x 2' –