1

我有一个具有默认表格大小和布局的电子表格,该表格由另一个电子表格中的信息填充。该表将始终具有相同的列数,但行中的条目数可能会有所不同。我想从表中选择所有数据,并将其粘贴到另一张表中,而不复制任何空行。

我最初的尝试涉及以下代码:

Set rightcell = Range("B9").End(x1Right)
Set bottomcell = Range(rightcell).End(x1Down)

要定义右下角应该是什么,所以我可以像这样引用整个表格:

Range("B9", bottomcell).Select

或者复制什么的。当我运行它时,它给了我一个“用户定义或对象定义的错误”,我不知道为什么。我将代码作为较大子项的一部分输入,并且我已将变量定义为范围和变体,以尝试使其正常工作。我花了相当多的时间在互联网上搜索解决方案,但到目前为止,我发现的信息与我的问题并没有明确的关系,并且没有类似的解决方案有效。

有谁知道合适的编码是什么,或者我是否犯了一些小错误,导致其他一切都失败?我记得在大学的一个项目中遇到过同样的问题,但对于我的生活,我不记得解决方案。这很令人沮丧。

另外,如果我太含糊,或者您需要对任务进行更多说明,请不要犹豫。在此先感谢您的帮助!

编辑:我遗漏的一个重要说明是,我要从中提取数据的表位于页面中间,其中包含我不想与之交互的多个其他表。

4

2 回答 2

1

如果表格始终位于工作表上的同一位置,您可以执行以下操作来复制整个表格:

'Modify this to any cell in your table (like the top left hand cell):
Range("B9").CurrentRegion.Copy Sheets("TheSheetYouWantToPasteTo").Range("A1")

即使表格在工作表上的位置发生变化,只要您知道表格中的一个单元格,您仍然可以使用上述代码复制表格。

如果您想保持与尝试相同的方法,请尝试以下方法:

Dim rightcell As Long
Dim bottomcell As Long

'Finds the furthest column to the right:
rightcell = Cells(5, Columns.Count).End(xlToLeft).Column

'Finds the bottom most row in the table (will stop at the first non-blank cell it finds.)
bottomcell = Range("B:B").Find("*", Range("B9"), searchdirection:=xlPrevious).Row

'Reference the variables like this:
Range(Cells(9, 2), Cells(bottomcell, rightcell)).copy _
Sheets("TheSheetYouWantToPasteTo").Range("A1")
于 2013-10-03T23:33:45.283 回答
0

这就是我用的

Public Function last_row() As Long
    Dim i As Integer
    Dim l_row As Long
    'my sheet has 35 columns change this number to fit your
    For i = 1 To 35
        If Sheet1.Cells(Rows.Count, i).End(xlUp).Row > l_row Then
            l_row = Sheet1.Cells(Rows.Count, i).End(xlUp).Row
        End If
    Next i
    last_row = l_row
End Function

然后使用

Dim l_row As Long
l_row = last_row
'Again since you know the last column change 35 here to your value 
'or use the String i.e. "AI"
Range("B9", Cells(l_row,35)).Select

这将查看每一列以确定包含数据的最后一行

于 2013-10-03T19:57:57.527 回答