VBA - 将过滤的数据值从一个工作簿复制到另一个工作簿
问题描述:
我从一个工作簿将大量过滤的数据(仅可见数据和值)复制到另一个工作簿,但过程非常缓慢。我想尝试绕过剪贴板,看看是否提高了速度,但我不断收到错误“对象不支持此属性或方法”。这里是代码是失败的:VBA - 将过滤的数据值从一个工作簿复制到另一个工作簿
ActiveSheet.SpecialCells(xlCellTypeVisible).Copy _
Destination:=Windows("Some Report").Worksheets(_
"Some Sheet").Range("A1").Values
我试过不同的变化,但收到相同的错误。预先感谢您的帮助。
答
我没有使用SpecialCells(xlCellTypeVisible)方法来完成此操作,它完全复制和粘贴。 (“A1:”&最后一列&最后一行)。复制目的地:=工作表(“Sheet2”)。范围(“E5 “)方法,它在Office 2010上工作得很好。我确实查看了SpecialCells(xlCellTypeVisible)方法,但它从来没有必要。
也许如果你把UsedRange.SpecialCells(xlCellTypeVisible).Copy它会工作吗?
答
只要设置cells.value彼此相等呢?这个小片段假设你想把单元复制到同一个目标单元中,所以如果这不是你正在做的事情,你必须对此进行调整。
Private Sub worksheet_selectionchange(ByVal Target As Range)
Dim lastRow As Integer
Dim lastCol As Integer
Dim wb1 As Workbook
Dim ws1 As Worksheet
Dim ws2 As Worksheet
Set wb1 = ThisWorkbook
Set ws1 = wb1.Sheets(1)
Set ws2 = wb1.Sheets(2)
lastRow = ws1.Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
lastCol = ws1.Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Column
For i = 1 To lastRow: For j = 1 To lastCol
If ws1.Cells(i, j).Value > 5 And Not ws1.Cells(i, j).Hidden Then
ws2.Cells(i, j).Value = ws1.Cells(i, j).Value
End If
Next: Next
End Sub
不幸的是,没有看到很多其他代码的我不能证明太多别的,但这是复制和粘贴唯一的选择,我知道的。
我无法按照自己的意愿让它工作。我所做的工作就是设定一个范围相等。工作表(“一些报表”)工作表(“某些表”)范围(“A1:ZZ100”)。值=工作簿(“某个报表2”)。工作表(“某些表2”)。范围(“A1: ZZ100" )。这些值。这工作得很好,但我还没有能够使它与过滤的范围一起工作。任何人都可以做到这一点,而不必循环通过每个可见的行? – Peter