【问题标题】:Filtered cells not pasting on a new sheet过滤的单元格未粘贴到新工作表上
【发布时间】:2020-06-23 22:12:12
【问题描述】:

卡在这个烦人的问题上,我想从 M_Sheet 中的数据中过滤单元格,选择 Range("x6") 中具有“新代码”的单元格的过滤区域并将其粘贴到新工作表中。 由于某些原因,单元格没有复制或粘贴

Set M_Sheet = Comp_Book.Worksheets("Sheet1")    'Comp_Book is a variable for a book currently open

M_Sheet.range("B6:F1835").AutoFilter Field:=6, Criteria1:="New Code"
M_Sheet.range("B6:F1835").SpecialCells(xlCellTypeVisible).Copy
'A code suggestion needed to paste the copied region in new a worksheet 
 starting from Column B

我尝试过的

 Dim N_Sheet = Comp_Book.Worksheets("Sheet2)
 N_Sheet.cells(2,2).paste

【问题讨论】:

  • 已更新尝试了几种方法,导致出现类似这样的一些错误
  • 欢迎来到 SO。我敢肯定这里有帮助,但你必须更具体一点,因为有多个问题。分配范围时,您必须使用 Set 关键字:Set Flter = ...。使用B6,您只能限定一个单元格。您刚刚打开了一个新的工作簿,它变成了 ActiveWorkbook 并且是空的,但是您在 Worksheets("Sheet1")... 行中应用了一个 AutoFilter。你想用SpecialCellsEntirecolumn 完成什么?您的帖子下方有一个编辑按钮。用它来做一些澄清。
  • 是的 Comp_Book 基本上是 activebook
  • 无需过滤和复制值。您可以设置范围并将这些值分配给新工作表。没有复制/粘贴。您是否尝试使用N_Sheet 创建新工作表?如果您可以提供更多代码,包括您如何设置工作簿,那可能会有所帮助。

标签: excel vba


【解决方案1】:

自动筛选功能。 CurrentRegion 和 SpecialCells

守则

Sub AutoFilterRange()
    Dim wb As Workbook: Set wb = Workbooks("Comp.xlsm")
    Dim src As Worksheet: Set src = wb.Worksheets("Sheet1")
    Dim rng As Range: Set rng = src.Range("B6").CurrentRegion
    rng.AutoFilter Field:=6, Criteria1:="New Code"
    Dim tgt As Worksheet: Set tgt = wb.Worksheets.Add
    rng.SpecialCells(xlCellTypeVisible).Copy
    tgt.Paste
    Application.CutCopyMode = False
    ' Show all data.
    'src.ShowAllData
    ' Turn off AutoFilter.
    'rng.AutoFilter
End Sub

【讨论】:

    【解决方案2】:

    此代码分配Comp_Book.Sheet1 中的范围并将变量设置为新工作表。它将过滤Column G 中“新代码”的范围,然后将该范围中的可见单元格复制到新工作表中。代码中提供了注释。

    Sub FilterRangeCopytoNewSheet()
        'Define your copy range and destination worksheet variables
        Dim cpyrng As Range: Set cpyrng = Comp_Book.Sheets("Sheet1").Range("B6:F1835")
        Dim destws As Worksheet: Set destws = Comp_Book.Sheets.Add(After:=Sheets(Sheets.Count))
        
            ThisWorkbook.Sheets("Sheet1").AutoFilterMode = False 'Clear any filter
                
                cpyrng.AutoFilter 6, "New Code" 'Field 6 will filter on Column G
                    
                cpyrng.SpecialCells(xlCellTypeVisible).Copy destws.Cells(2, 2) 'Copy visible to new sheet
                
            ThisWorkbook.Sheets("Sheet1").AutoFilterMode = False 'Clear filter
    End Sub
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-25
      • 1970-01-01
      • 2017-12-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多