gpt4 book ai didi

excel - 从过滤表的一列复制/粘贴/计算可见单元格

转载 作者:行者123 更新时间:2023-12-01 19:24:17 30 4
gpt4 key购买 nike

我正在使用 AutoFilter 对 VBA 中的表格进行排序,这会产生较小的数据表。我只想在应用过滤器后复制/粘贴一列的可见单元格。另外,我想对一列的过滤值进行平均,并将结果放入不同的单元格中。

我在堆栈上找到了这个片段,它允许我复制/粘贴过滤器的整个可见结果,但我不知道如何修改它或另一种方法来仅获取一列的数据(没有标题)。

Range("A1",Cells(65536,Cells(1,256).End(xlToLeft).Column).End(xlUp)).SpecialCells(xlCellTypeVisible).Copy
Sheets("Sheet2").Range("A1").PasteSpecial xlPasteValuesAndNumberFormats
Application.CutCopyMode = False

添加答案(使用过滤后的值进行计算):

tgt.Range("B2").Value =WorksheetFunction.Average(copyRange.SpecialCells(xlCellTypeVisible))

最佳答案

我在 Sheet1 上设置了一个简单的 3 列范围,其中 A、B 和 C 列中包含国家/地区、城市和语言。以下代码自动筛选该范围,然后仅将自动筛选数据的其中一列粘贴到另一张工作表。您应该能够根据您的目的修改它:

Sub CopyPartOfFilteredRange()
Dim src As Worksheet
Dim tgt As Worksheet
Dim filterRange As Range
Dim copyRange As Range
Dim lastRow As Long

Set src = ThisWorkbook.Sheets("Sheet1")
Set tgt = ThisWorkbook.Sheets("Sheet2")

' turn off any autofilters that are already set
src.AutoFilterMode = False

' find the last row with data in column A
lastRow = src.Range("A" & src.Rows.Count).End(xlUp).Row

' the range that we are auto-filtering (all columns)
Set filterRange = src.Range("A1:C" & lastRow)

' the range we want to copy (only columns we want to copy)
' in this case we are copying country from column A
' we set the range to start in row 2 to prevent copying the header
Set copyRange = src.Range("A2:A" & lastRow)

' filter range based on column B
filterRange.AutoFilter field:=2, Criteria1:="Rio de Janeiro"

' copy the visible cells to our target range
' note that you can easily find the last populated row on this sheet
' if you don't want to over-write your previous results
copyRange.SpecialCells(xlCellTypeVisible).Copy tgt.Range("A1")

End Sub

请注意,通过使用上述语法进行复制和粘贴,不会选择或激活任何内容(在 Excel VBA 中应始终避免这样做),并且不会使用剪贴板。因此,Application.CutCopyMode = False 不是必需的。

关于excel - 从过滤表的一列复制/粘贴/计算可见单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17531128/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com