首页 文章

根据条件复制某些Excel列

提问于
浏览
0

我做的第一件事是创建一个按钮,使用此代码复制某些单元格:

工作表(“Sheet1”) . 范围(“A:A,B:B,D:D”) . 复制_并且工作正常 .

其次,我发现代码将根据一个标准连续复制所有细节,在这种情况下,如果“位置”列中有“A” .

Private Sub ENTIREROW_Click()'Sub copyrows()Dim i As Range,Cell as Object Set i = Range(“D:D”)'替换为包含您的真/假值的范围对于每个单元格我是否IsEmpty(细胞)然后
退出子
万一

如果Cell.Value =“A”那么
Cell.ENTIREROW.Copy
Sheet2.Select'替换为您的工作表
ActiveSheet.Range( “A65536”) . 完(xlUp) . 选择
Selection.Offset(1,0) . 选择
ActiveSheet.Paste
万一
下一个结束子

Spreadsheet data

我的问题是,如何复制指定列(A,B,D)中的一个按钮中“位置”中有“A”的所有信息 .

此外,这是我的示例数据,我将实际使用它的表格有34列要复制 . 当您不需要整个序列时,是否有更有效的方法来设置范围,除了C列中的数据之外的所有内容?

在此先感谢并为我的解释技巧道歉 .

1 回答

  • 0

    一种方式可能是:

    • 过滤你的来源

    • 隐藏列C.

    • 使用 .PasteSpecial xlPasteValues 将结果复制到目标中

    • 取消隐藏源表上的C列

    • 删除自动过滤器

    使用 xlPasteValues 仅粘贴源中的可见单元格 - 因此没有列C

    然后代码如下: .

    Sub CopyRows()
        With Sheets(1).Range([A2], [A2].SpecialCells(xlLastCell))
            [A1].AutoFilter
            .AutoFilter Field:=4, Criteria1:="A"
            [C:C].EntireColumn.Hidden = True
            .Copy
            [C:C].EntireColumn.Hidden = False
        End With
        With Sheets(2)
            If .Cells(Sheets(2).Rows.Count, 1).End(xlUp) = "" Then 'it's a clean sheet
                .Cells(Sheets(2).Rows.Count, 1).End(xlUp).PasteSpecial Paste:=xlPasteValues
            Else
                .Cells(Sheets(2).Rows.Count, 1).End(xlUp).Offset(1).PasteSpecial Paste:=xlPasteValues
            End If
        End With
        Application.CutCopyMode = False
        Sheet1.[A1].AutoFilter
    End Sub
    

相关问题