2016-06-07 56 views
0

我有一列数据,其中有多个值类型。我正在尝试将每个值类型分隔出来放在一个单独的列中。下面是一个例子的数据:在同一个excel列中分离数据

6 - Cutler, Jay (Ovr: 83) 
22 - Forte, Matt (Ovr: 88) 
86 - Miller, Zach (Ovr: 80) 

我试图通过a)去数据和单击文本到列;然而,数据的“Ovr:80”部分并没有将“Ovr”从80中分离出来。我也试过b)将其转换为.csv文件,但又无法将“Ovr”从“80”中分离出来。有没有一个公式可以用来将这部分数据与其余部分分开?

我想下面的数据将被分成不同的列显示:

6 | Cutler, | Jay | Ovr | 83 
22 | Forte | Matt | Ovr | 88 
86 | Miller | Zach | Ovr | 80 

任何有识之士深表感谢!

+0

查看数据如果数据总是这样,它可能会工作,替换 - ,():没有任何内容的字符,然后最终用一个空格替换一个双空格,然后你最终得到一个完美的空间分隔的数据集:),我猜你可以设置一个公式来做到这一点,我个人会使用VBA,或者使用VBA做同样的事情,或使用RegEx这将是一个更安全的选项s其数据变化非常灵活 –

+0

为什么Cutler保存后的逗号以及Forte和Miller丢弃后的逗号? –

+0

@ Gary'sStudent我会采取一个有教养的猜测,这是一个排字错误 –

回答

0

使用上面你可以做这样的事情的方法......

先清洁文本,以便它更易于管理,使用这个公式和复制在一列,你可以清理它,因此它成为一种空间分隔设置

=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1,"- ",""),",",""),"(",""),")",""),":","") 

从那里只需将公式给出的值复制到新工作表中,然后使用“文本到列”将文本拆分成列。

0

为了记录我不推荐这种方法,如果你愿意做文本到列选项。使用该解决方案

职能是:

为您的文本的第一列使用以下命令:

=left(A1,find(" ",A1))*1 

假设您没有任何前导空格,这将拉出第一个数字。 * 1从文本转换为数字。

你的最后时间第二列使用以下命令:

=MID(A1,FIND("-",A1)+2,FIND(",",A1)-(FIND("-",A1)+2)) 

只要你有一个昏迷和短划线作为你的榜样数据表明,你不会得到一个错误,它应该拉姓氏不昏迷。

对于你的第一个名字的第三列遵循相同的通用技术,如通过以下姓氏,

=MID(A1,FIND(",",A1)+2,FIND("(",A1)-2-(FIND(",",A1)+2)+1) 

遵循类似的模式,让你在列

=MID(A1,FIND("(",A1)+1,FIND(":",A1)-1-(FIND("(",A1)+1)+1) 

终于搞定您的年龄栏使用此:

=MID(A1,FIND(":",A1)+2,FIND(")",A1)-1-(FIND(":",A1)+2)+1) 

将上述公式复制到最远你需要去。

1

选择要处理和运行这个宏放置在细胞的结果选定的单元格右侧的单元格:你可以尝试一些非常简单的

Option Explicit 

Sub dural() 
    Dim r As Range, s As String, ary 
    Dim i As Long, a 
    For Each r In Selection 
     s = r.Value 
     If s <> "" Then 
      s = Replace(Replace(s, "-", " "), ",", " ") 
      s = Replace(Replace(s, "(", " "), ")", " ") 
      s = Application.WorksheetFunction.Trim(Replace(s, ":", " ")) 
      ary = Split(s, " ") 
      i = 1 
      For Each a In ary 
       r.Offset(0, i).Value = a 
       i = i + 1 
      Next a 
     End If 
    Next r 
End Sub 

enter image description here