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