VBA将列中的所有其他行剪切到最后一行并粘贴到新列,然后删除空行

时间:2014-09-22 21:03:44

标签: excel vba excel-vba loops

希望得到一些帮助。我是VBA的新手,尤其是循环。我已经获得了不同长度的数据,这些数据将在A列中由错误字符串(A1,A3,A5,...)和相应的错误消息(A2,A4,A6,...)组成。

我想剪切错误信息数据(A2,A4,A6,...)并将其粘贴到H列(H1,H3,H5,...)中,直到最后一行数据为止。列A.然后我想删除新清空的行(2,4,6,...),所以我在AI列中有一个错误字符串表可以使用' Text to Column' on,以及H列中的相应错误消息。

最终目标是在完成“文本到列”之后,我将拥有一个可以变成表格的数据块。

如果你认为有一种比cut-paste-delete空行方法更好的方法,那么我就是所有的耳朵。我也不想打扰你,如果你有一个很好的资源来构建X代码循环到最后一行,我也很喜欢。

2 个答案:

答案 0 :(得分:2)

Sub FormatForErrorCorrections()
    Dim i As Integer 'i always stores the current row# that the loop is operating on
    'since we'll be deleting rows, start at the bottom and work our way up
    With ActiveSheet
        For i = .Range("A" & .Rows.Count).End(xlUp).Row To 1 Step -2 'every other row
            'assign value from column A to previous line column H
            .Range("H" & (i - 1)).Value = .Range("A" & i).Value
            'split A column into A:E using "." delimiter
            .Range("A" & (i - 1) & ":E" & (i - 1)) = Split(.Range("A" & (i - 1)).Value, ".")
            'delete the current row
            .Rows(i).Delete
        Next i 'i decrements by 2 until we reach 1 (Step -2)
    End With
End Sub

答案 1 :(得分:0)

使用VBA和循环是一种可能性。另一种方法是使用辅助列对数据进行排序。

  • 向表中添加辅助列,并在前两个单元格中输入“a”和“b”。
  • 选择两个单元格,然后双击填充手柄以将序列填充到表格的最后一行。
  • 按新列
  • 对表格进行排序
  • 选择所有“a”行中的单元格并复制
  • 粘贴在“b”行旁边
  • 删除帮助列