首页 文章

Excel找到范围结束,然后选择范围和复制

提问于
浏览
0

这可能会或可能不会被要求 .

我正在尝试使用宏将一个单元格范围从一个工作表复制到另一个工作表 . 我遇到的问题是,每次运行宏时,我想要复制的范围都会有很大差异 .

例如,我想在第一次运行时复制范围(“A2:P64”),然后当我再次运行数据时,范围的开始仍然是A2,但范围的结束可能是P25或p90000 . 它总是列P和(x变量)行 .

我尝试过这样的事情:

Dim past As Worksheet
Dim countHist As String
Dim view As Worksheet
Dim countView As String

Set view = ThisWorkbook.Worksheets("BlueSteel Errors")
Set past = ThisWorkbook.Worksheets("Historical")

countView = view.Cells(Rows.Count, "A").End(xlUp).Row
countHist = past.Cells(Rows.Count, "A").End(xlUp).Row
MsgBox ("P" & countView) ' This currently gives the count of 53, so output is P53

view.Range("A2:P & countView").Select   ' THIS IS THE PROBLEM LINE.. should look
'should resemble view.Range("A2:P53").Select
'EVERYTHING ELSE APPEARS TO WORK

Selection.Copy
past.Select
Range("A" & countHist).Select
ActiveSheet.Paste

我找不到一种方法来确定文本存在的最后一行,然后将该数字附加到Range字段的末尾,这样我就可以选择并附加到另一个工作表..我只需要A2中的数据 - Px不是全部超出P的多余字段 . 也许我需要复制然后删除它 .

2 回答

  • 0

    请...请...请...请...请...请...请...请...请...请...请...请...请... ..请...请......请......请......请...不要使用 .Select INTERESTING READ

    您的代码中也有一些错误

    • 您已将 countHistcountView 声明为 String . 它应该是 Long

    • 引号内的任何内容都是字符串 . 所以 "A2:P & countView" 是一个字符串 . 你需要 "A2:P" & countView

    • 您需要将 1 添加到目标表的最后一行,以便不覆盖最后一行 .

    试试这个

    Sub Sample()
        Dim past As Worksheet, view As Worksheet
        Dim countHist As Long, countView As Long
    
        Set view = ThisWorkbook.Worksheets("BlueSteel Errors")
        Set past = ThisWorkbook.Worksheets("Historical")
    
        countView = view.Cells(view.Rows.Count, "P").End(xlUp).Row
        countHist = past.Cells(past.Rows.Count, "A").End(xlUp).Row + 1
    
        '~~> Do a direct copy paste instead of selecting first
        view.Range("A2:P" & countView).Copy past.Range("A" & countHist)
    End Sub
    

    您可能需要使用 .Find 来查找最后一行并非所有单元格都填充在特定行中 . 有关查找最后一行的更多信息HERE

  • 0

    你需要 End(xlUp) 功能 .

    所以更新你有问题的一行

    view.Range("A2:P & countView").Select   ' THIS IS THE PROBLEM LINE..
    

    view.Range("A2:" & view.Range("P" & Cells.Rows.Count).End(xlUp).Address).Select
    

相关问题