VBA - 剪切每行的最后一个条目并粘贴到新列中。行长度各不相同

时间:2017-08-17 21:56:52

标签: excel vba excel-vba ms-office

我是新用户,无法嵌入图片...请参阅链接。

说我的数据如下:Before。而且,我希望它看起来像这样:After。这是我一直在尝试的代码(失败):

Dim lastRow As Long
lastRow = Range("Sheet2!A" & Rows.Count).End(xlUp).Row
Dim col As Integer
col = Range("Sheet2!A1:A" & lastRow).End(xlToRight).Column
Columns(col).Copy
Columns(col + 1).Insert Shift:=xlToRight

我希望宏能够处理具有任意行数的数据集,因此是lastRow的东西。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

这是如何工作的?

Sub move_data()
Dim lastRow As Long, lastCol As Long
Dim ws As Worksheet

Set ws = Worksheets("Sheet2")
lastRow = ws.Range("A" & Rows.Count).End(xlUp).Row
lastCol = ws.UsedRange.Columns.Count

Dim i As Long
For i = 1 To lastRow
    If ws.Cells(i, lastCol) = "" Then
        ws.Cells(i, ws.Cells(i, 1).End(xlToRight).Column).Cut ws.Cells(i, lastCol)
    End If
Next i

End Sub

我在使用UsedRange时犹豫不决,但如果您的数据确实存在于"块"应该可以正常工作。基本上,它只检查每一行,如果最后一列是空的,则将最后一个单元格从A列移动到该列。