重新排列单个列中的数据

我需要帮助编写Excel VBA的代码。 我有以下格式的数据:

12.12312 ser-asd alskdja123 alskd bv laskd alskdj alsdj 12.423 12.656 asd sdfgsd sdfsd sdfsdf sdfsd sd fsd fsd fsdf 

当前数据存储在一个Excel列中 。 我想要以下面的格式:

 12.12312 ser-asd alskdja123 alskd bv laskd alskdj alsdj 12.423 12.656 ser-asd alskdja123 alskd bv sdfsd sd fsd fsd fsdf 

我不是高级程序员,我是networking工程师。

收集A列中的string后,您将删除行; 总是从底部开始,在删除行时工作到顶部。 将string收集到分隔列表(在以下情况下使用零长度空格作为分隔符),可以直接使用UBound函数将string拆分到目标单元格中​​,以调整目标的大小。

 Sub urgent() Dim rw As Long, str As String With Worksheets("Sheet2") '<~~ set this worksheet reference properly! For rw = .Cells(Rows.Count, "A").End(xlUp).Row To 1 Step -1 If IsNumeric(.Cells(rw, "A")) Then If CBool(Len(str)) Then .Cells(rw, "B").Resize(1, UBound(Split(str, ChrW(8203)))) = _ Split(str, ChrW(8203)) End If str = vbNullString Else str = .Cells(rw, "A").Value2 & ChrW(8203) & str .Rows(rw).EntireRow.Delete End If Next rw For v = .Cells(2, 1).CurrentRegion.Columns.Count To 1 Step -1 .Columns(v).AutoFit Next v End With End Sub 

此例程取决于您列出的值在列A中的事实。

我猜从这样的input实际需要的是:

SO33607094的例子

没有阴影行。 这是可以实现的没有VBA,提供了一个数字终止列表,如:

 =IFERROR(IF(AND(ISNUMBER($A1),NOT(ISNUMBER(OFFSET($A1,COLUMN()-1,)))),IF(A1<>"",OFFSET($A1,COLUMN()-1,),""),OFFSET($A1,COLUMN(),-1,)),"") 

在B1中复制到适合,然后所有的公式,直到列整个空白。

可以通过“修复”公式结果(复制所有单元格和“select性粘贴…”,顶部的值)并过滤删除ColumnB中空白的行来删除阴影行。

假设12.12312的确是一个数字,而不是文本。