找到一行的最后一个非空单元格,然后复制到该单元格并粘贴

时间:2015-02-12 16:15:48

标签: excel-vba vba excel

查找第5行的最后一个非空单元格的VBA代码,将数据复制到第5行的单元格,并在转置后将该数据粘贴为值。我试图通过复制数据来记录宏,但它没有用。

1 个答案:

答案 0 :(得分:0)

我假设您正在谈论excel vba。下面的代码从sheet1列A中的范围复制到行中的最后一个数据(如果您有5个不想要复制的数据,则可以将其更改为仅排在第5行)。然后将它转换为sheet2。


更新为仅转到5

Sub someMacro()

Dim answerRange As Range
Dim checkBlankRange As Range
Dim lastRowInRange As Long
Dim lastcolumn As Long

Set checkBlankRange = Worksheets("Sheet1").Range("A1:A5") 'changed to 1 to 5
lastRowInRange = 5 ' default to 5
lastcolumn = Sheets("Sheet1").Cells.Find(What:="*", SearchDirection:=xlPrevious, SearchOrder:=xlByColumns).Column
'or you can use line below for last column 
'lastcolumn = Sheets("Sheet1").Cells(1, Sheets("Sheet1").Columns.Count).End(xlToLeft).Column

    For Each cell In checkBlankRange
            If cell.Value = "" Then 'first empty cell
                    lastRowInRange = cell.row 'get the row number of the empty cell
                Exit For
            End If
    Next cell

    Set answerRange = Sheets("Sheet1").Range(Sheets("Sheet1").Cells(1, 1), Sheets("Sheet1").Cells(lastRowInRange, lastcolumn))

answerRange.Copy
ActiveWorkbook.Sheets("Sheet2").Range("A1").PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=True

End Sub

如果数据总是在那些列中,您将不需要很多代码,您可以只使用录制宏中的内容 - 清理后删除选择

Sub simpleVersion()

Sheets("Sheet1").Range("A1:F5").Copy
Sheets("Sheet2").Range("A1").PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=True

End Sub