首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Excel Vba中选择最后8行

在Excel Vba中选择最后8行
EN

Stack Overflow用户
提问于 2016-08-01 15:20:27
回答 4查看 6.1K关注 0票数 2

我想选择x行数量的最后8行(数量每月变化),这里已经有一个线程,但只有一列。我在几个专栏中都需要它,并尝试了两种不同的方法,但由于语法的原因,这两种方法都不起作用。

代码语言:javascript
运行
复制
Sheets("Sheet2").Select
LastRow = Range("D" & Rows.Count).End(xlUp).Row
Set Last8Rows =  Range("A" & LastRow).Offset(-7, 0).Resize(8, 1)
Set Last8aRows = Range("B" & LastRow).Offset(-7, 0).Resize(8, 1)
Set Last8bRows = Range("C" & LastRow).Offset(-7, 0).Resize(8, 1)
Set Last8cRows = Range("D" & LastRow).Offset(-7, 0).Resize(8, 1)
Set Last8dRows = Range("E" & LastRow).Offset(-7, 0).Resize(8, 1)
Set Last8eRows = Range("F" & LastRow).Offset(-7, 0).Resize(8, 1)
Set Last8fRows = Range("G" & LastRow).Offset(-7, 0).Resize(8, 1)
LastxRows = Last8Rows + Last8aRows + Last8bRows + Last8cRows + Last8dRows + Last8eRows + Last8fRows
LastxRows.Copy

我的第二次尝试

代码语言:javascript
运行
复制
Sheets("Sheet2").Select
LastRow = Range("D" & Rows.Count).End(xlUp).Row
Set Last8Rows =  Range("A:D" & LastRow).Offset(-7, 0).Resize(8, 1)
Last8Rows.Copy
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-08-01 15:28:04

尝试下面的代码(不需要通过Select复制工作表):

代码语言:javascript
运行
复制
Option Explicit

Sub Copy_LastEight_Rows()

Dim Sht2            As Worksheet
Dim LastRow         As Long
Dim Last8Rows       As Range

Set Sht2 = ThisWorkbook.Sheets("Sheet2")

LastRow = Sht2.Range("D" & Sht2.Rows.Count).End(xlUp).Row

' modify Column D to your need
Set Last8Rows = Sht2.Range("A" & LastRow - 7 & ":D" & LastRow)
Last8Rows.Copy

End Sub
票数 5
EN

Stack Overflow用户

发布于 2016-08-01 15:31:14

当你不确定你的范围时,也就是你不知道你的最后一列是什么,那么试试这个:)它使用.Find来查找最后一行和最后一列。

代码语言:javascript
运行
复制
Sub Sample()
    Dim ws As Worksheet
    Dim sRow As Long, lRow As Long, lCol As Long
    Dim LastCol As String
    Dim rng As Range

    Set ws = Sheet1 '<~~ Change as applicable

    With ws
        '~~> Find last row
        lRow = .Cells.Find(What:="*", _
                After:=.Range("A1"), _
                Lookat:=xlPart, _
                LookIn:=xlFormulas, _
                SearchOrder:=xlByRows, _
                SearchDirection:=xlPrevious, _
                MatchCase:=False).Row

        '~~> Find last column
        lCol = .Cells.Find(What:="*", _
                After:=.Range("A1"), _
                Lookat:=xlPart, _
                LookIn:=xlFormulas, _
                SearchOrder:=xlByColumns, _
                SearchDirection:=xlPrevious, _
                MatchCase:=False).Column

        '~~> Get column letter of last column
        LastCol = Split(.Cells(, lCol).Address, "$")(1)
        sRow = lRow - 7

        Set rng = .Range("A" & sRow & ":" & LastCol & lRow)

        Debug.Print rng.Address
    End With
End Sub
票数 4
EN

Stack Overflow用户

发布于 2016-08-01 15:34:49

代码语言:javascript
运行
复制
Sheets("Sheet2").Select
LastRow = Range("D" & Rows.Count).End(xlUp).Row
Set Last8Rows =  Range("A" & LastRow - 7, "D" & LastRow)
Last8Rows.Copy
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38693039

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档