按单元格内的数字拆分单元格
Split Cell by Numbers Within Cell
我有一些字段需要分成不同的单元格。它们采用以下格式:
Numbers on Mission 21 0 21
Numbers on Mission 5 1 6
所需的输出将是 4 个独立的单元格。第一个包含字符串 "Numbers on Mission" 中的单词,随后的单元格将包含每个数字,由 space 确定。因此,对于第一个示例,要提取的数字将是 21、0、21。每个数字都位于字符串值旁边的自己的单元格中。对于第二个:5、1、6。
我尝试使用拆分函数,但不确定如何具体定位数字,以及如何根据分隔数字的 space 来识别数字。
除非我忽略了什么,否则您可能根本不需要 VBA。您是否尝试过 "Text to Columns" 选项?如果您 select 包含您想要拆分的信息的单元格,请转到数据 -> 文本到列。在那里,您可以选择 "delimited" 并选择 space 作为分隔符,这会将您的数据拆分为多个单元格,按 space 所在的位置拆分。
编辑:刚刚意识到这也会拆分您的字符串。在这种情况下,当您在文本到列的第三部分时,选择一个不是包含您数据的单元格的脱色单元格。 (即,如果您的数据在 A1 中,请选择 B1 作为目的地,它会将拆分信息放在那里。然后只需将文本列与 =B1&" "&C1&" "&D1
之类的东西组合起来)
我能够使用以下方法正确拆分值:
If i.Value Like "*on Mission*" Then
x = Split(i, " ")
For y = 0 To UBound(x)
i.Offset(0, y + 1).Value = x(y)
Next y
End If
与您的第一个案例(Numbers on Mission)相关,简单的解决方案如下所示:
Sub SplitCells()
Const RowHeader As String = "Numbers on Mission"
Dim ArrNum As Variant
ArrNum = Split(Replace(Range("A1"), RowHeader, ""), " ")
For i = 1 To UBound(ArrNum)
Cells(1, i + 2) = ArrNum(i)
Next
Cells(1, 2) = RowHeader
End Sub
同样的逻辑也适用于你的第二种情况。希望这可能有所帮助。
我有一些字段需要分成不同的单元格。它们采用以下格式:
Numbers on Mission 21 0 21
Numbers on Mission 5 1 6
所需的输出将是 4 个独立的单元格。第一个包含字符串 "Numbers on Mission" 中的单词,随后的单元格将包含每个数字,由 space 确定。因此,对于第一个示例,要提取的数字将是 21、0、21。每个数字都位于字符串值旁边的自己的单元格中。对于第二个:5、1、6。
我尝试使用拆分函数,但不确定如何具体定位数字,以及如何根据分隔数字的 space 来识别数字。
除非我忽略了什么,否则您可能根本不需要 VBA。您是否尝试过 "Text to Columns" 选项?如果您 select 包含您想要拆分的信息的单元格,请转到数据 -> 文本到列。在那里,您可以选择 "delimited" 并选择 space 作为分隔符,这会将您的数据拆分为多个单元格,按 space 所在的位置拆分。
编辑:刚刚意识到这也会拆分您的字符串。在这种情况下,当您在文本到列的第三部分时,选择一个不是包含您数据的单元格的脱色单元格。 (即,如果您的数据在 A1 中,请选择 B1 作为目的地,它会将拆分信息放在那里。然后只需将文本列与 =B1&" "&C1&" "&D1
之类的东西组合起来)
我能够使用以下方法正确拆分值:
If i.Value Like "*on Mission*" Then
x = Split(i, " ")
For y = 0 To UBound(x)
i.Offset(0, y + 1).Value = x(y)
Next y
End If
与您的第一个案例(Numbers on Mission)相关,简单的解决方案如下所示:
Sub SplitCells()
Const RowHeader As String = "Numbers on Mission"
Dim ArrNum As Variant
ArrNum = Split(Replace(Range("A1"), RowHeader, ""), " ")
For i = 1 To UBound(ArrNum)
Cells(1, i + 2) = ArrNum(i)
Next
Cells(1, 2) = RowHeader
End Sub
同样的逻辑也适用于你的第二种情况。希望这可能有所帮助。