excel 将筛选数据从一个工作表复制到另一个工作表

jdg4fx2g  于 2023-06-30  发布在  其他
关注(0)|答案(1)|浏览(524)

我正在尝试将筛选后的数据从sht1上的表复制到sht2(它没有表)。使用下面的代码可以很好地实现这一点。我遇到的问题是,它总是将表中的所有数据从sht1复制到sht2。我正在寻找的是一种只将过滤后的数据复制到sht2的方法。我查找了几个类似的问题,但是(由于我的知识非常有限)我无法在代码中实现它们。任何帮助都是非常感谢的。

  1. Private Sub CommandButton1_Click()
  2. Range("A2:P100").ClearContents
  3. Set sht1 = ThisWorkbook.Sheets("DRIVE input form")
  4. Set sht2 = ThisWorkbook.Sheets("Dowlex 2023")
  5. If sht2.Range("C1").Value = "" Then Exit Sub
  6. Dim lastRow As Long
  7. sht1.Range("F2:F100").Value = sht2.Range("C2:C100").Value
  8. sht1.Range("G2:G100").Value = sht2.Range("E2:E100").Value
  9. sht1.Range("K2:K100").Value = sht2.Range("F2:F100").Value
  10. sht1.Range("M2:M100").Value = sht2.Range("G2:G100").Value
  11. sht1.Range("J2:J100").Value = sht2.Range("A2:A100").Value
  12. sht1.Range("P2:P100").Value = sht2.Range("H2:H100").Value
  13. sht1.Range("N2:N100").Value = sht2.Range("I2:I100").Value
  14. End Sub
7fyelxc5

7fyelxc51#

您可以使用SpecialCells仅获取可见行:

  1. Sub Tester()
  2. Dim wsSrc As Worksheet, wsDest As Worksheet
  3. Set wsSrc = ThisWorkbook.Worksheets("data")
  4. Set wsDest = ThisWorkbook.Worksheets("filtered")
  5. CopyVisibleValues wsSrc.Range("A2:A200"), wsDest.Range("B2")
  6. CopyVisibleValues wsSrc.Range("B2:B200"), wsDest.Range("A2")
  7. Application.CutCopyMode = False
  8. End Sub
  9. Sub CopyVisibleValues(rngSrc As Range, rngDest As Range)
  10. Dim rngVis As Range
  11. On Error Resume Next 'ignore error if no visible rows
  12. Set rngVis = rngSrc.SpecialCells(xlCellTypeVisible)
  13. On Error GoTo 0 'stop ignoring errors
  14. If Not rngVis Is Nothing Then
  15. rngVis.Copy
  16. rngDest.PasteSpecial xlPasteValues
  17. Else
  18. Debug.Print "No visible cells in " & rngSrc.Address(False, False)
  19. End If
  20. End Sub
展开查看全部

相关问题