2016-03-02 72 views
-1

下午好,Excel:将特定文本移动到另一行/列

我在分隔一列中的数据时遇到了一些困难。我有很多行,但上传数据的人员将所有内容合并为一列。整个专栏有教育,年龄,男性,女性和血型。我想要把病人的属性,并把它们分成五列。有没有一种方法可以将数据移动到五列而不使用Excel中“数据”中的“文本到列”?

任何帮助,将不胜感激。

谢谢。

EducationAge MaleFemale Bloodtype 
MiddleAlabama21 10 ABpos 
WestGov22 01 Bneg 
VirginaTech25 01 ABpos 
+2

**所有年龄大于9 ?? ** –

+1

https://support.office.com/zh-cn/article/Split-text-among-columns-by-using-functions-c2930414-9678- 49d7-89bc-1bf66e219ea8正是你所需要的,你应该能够以编程方式使用搜索功能来查找和分割你的字符串空白 –

+0

所有年龄段都在9以上 – Starbucks

回答

3

随着A1数据,在B1输入:

=LEFT(TRIM(MID(SUBSTITUTE($A1," ",REPT(" ",999)),COLUMNS($A:A)*999-998,999)),LEN(TRIM(MID(SUBSTITUTE($A1," ",REPT(" ",999)),COLUMNS($A:A)*999-998,999)))-2) 

C1输入:

=RIGHT(TRIM(MID(SUBSTITUTE($A1," ",REPT(" ",999)),COLUMNS($A:A)*999-998,999)),2) 

D1输入:

=TRIM(MID(SUBSTITUTE($A1," ",REPT(" ",999)),COLUMNS($A:B)*999-998,999)) 

E1输入:

=TRIM(MID(SUBSTITUTE($A1," ",REPT(" ",999)),COLUMNS($A:C)*999-998,999)) 

enter image description here

这将工作,如果年龄是位数(大于9,小于100)

另请注意,我已将男性/女性字段作为单个字段留下了数字字段。

2

对于VBA,这是依赖于年龄始终是两位数。

Sub splitStr() 
    Dim rng As Range 
    Dim ws As Worksheet 
    Dim spltStr() As String 

    Set ws = Sheets("Sheet4") 
    With ws 
     For Each rng In .Range(.Cells(2, 1), .Cells(.Rows.Count, 1).End(xlUp)) 
      spltStr = split(Trim(rng)) 
      rng.Offset(, 1) = Left(spltStr(0), Len(spltStr(0)) - 2) 
      rng.Offset(, 2) = --Right(spltStr(0), 2) 
      rng.Offset(, 3) = --Left(spltStr(1), 1) 
      rng.Offset(, 4) = --Right(spltStr(1), 1) 
      rng.Offset(, 5) = spltStr(2) 
     Next rng 
    End With 
End Sub 

enter image description here

这不会做头。那些是手工输入的。

相关问题