Excel:将特定文本移动到另一行/列

Excel:将特定文本移动到另一行/列,excel,format,vba,Excel,Format,Vba,下午好 我在分离一列中的数据时遇到了一些困难。我有很多行,但上传数据的人将所有内容合并到一列中。整个专栏包括教育程度、年龄、男性、女性和血型。我想把病人的属性分为五列。有没有一种方法可以不使用Excel中“数据”中的“文本到列”将数据移动到五列中 任何帮助都将不胜感激 多谢各位 EducationAge MaleFemale Bloodtype MiddleAlabama21 10 ABpos WestGov22 01 Bneg VirginaTech25 01 ABpos 数据在A

下午好

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

任何帮助都将不胜感激

多谢各位

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

数据在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)
=RIGHT(TRIM(MID(SUBSTITUTE($A1," ",REPT(" ",999)),COLUMNS($A:A)*999-998,999)),2)
=TRIM(MID(SUBSTITUTE($A1," ",REPT(" ",999)),COLUMNS($A:B)*999-998,999))
=TRIM(MID(SUBSTITUTE($A1," ",REPT(" ",999)),COLUMNS($A:C)*999-998,999))
C1中输入:

=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)
=RIGHT(TRIM(MID(SUBSTITUTE($A1," ",REPT(" ",999)),COLUMNS($A:A)*999-998,999)),2)
=TRIM(MID(SUBSTITUTE($A1," ",REPT(" ",999)),COLUMNS($A:B)*999-998,999))
=TRIM(MID(SUBSTITUTE($A1," ",REPT(" ",999)),COLUMNS($A:C)*999-998,999))
D1中输入:

=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)
=RIGHT(TRIM(MID(SUBSTITUTE($A1," ",REPT(" ",999)),COLUMNS($A:A)*999-998,999)),2)
=TRIM(MID(SUBSTITUTE($A1," ",REPT(" ",999)),COLUMNS($A:B)*999-998,999))
=TRIM(MID(SUBSTITUTE($A1," ",REPT(" ",999)),COLUMNS($A:C)*999-998,999))
并在E1中输入:

=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)
=RIGHT(TRIM(MID(SUBSTITUTE($A1," ",REPT(" ",999)),COLUMNS($A:A)*999-998,999)),2)
=TRIM(MID(SUBSTITUTE($A1," ",REPT(" ",999)),COLUMNS($A:B)*999-998,999))
=TRIM(MID(SUBSTITUTE($A1," ",REPT(" ",999)),COLUMNS($A:C)*999-998,999))

如果年龄为2位数(大于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


这不会对标题执行任何操作。这些都是手写的。

所有年龄都在9岁以上吗??这正是您所需要的,您应该能够以编程方式使用搜索函数来查找字符串,并按空格分隔字符串所有年龄都在9岁以上