gpt4 book ai didi

vba - 在 VBA 过滤表中选择第一 10 行可见单元格

转载 作者:行者123 更新时间:2023-12-04 21:32:28 24 4
gpt4 key购买 nike

编码和 VBA 的新手,这是我第一次尝试选择和复制 第 10 行可见数据 连同 table 标题 在我使用 VBA 宏过滤的表中。我在stackoverflow上的这个链接中使用了代码示例。 VBA selecting visible cells after filtering .这个特定的示例使我能够学习如何复制单个列中的值。我想复制整行或某些列的值,具体取决于哪个更容易。

Sub LPRDATA()


Dim TYEAR As String
TYEAR = Range("TYEAR").Value
Dim QUARTER As String
QUARTER = Range("QUARTER").Value
Dim r As Range, rC As Range
Dim j As Long


Sheets("CONTROL").Select
Sheets("DATA").Visible = True
Sheets("CONTROL").Select
Sheets("10").Visible = True
Sheets("DATA").Select
ActiveWorkbook.Worksheets("DATA").ListObjects("tblData").Sort.SortFields.Clear
ActiveWorkbook.RefreshAll
Range("tblData[[#Headers],[Sn '#]]").Select

Range("tblData[[#Headers],[Year]]").Select
Selection.AutoFilter
ActiveSheet.ListObjects("tblData").Range.AutoFilter Field:=2, Criteria1:="LPR"
ActiveSheet.ListObjects("tblData").Range.AutoFilter Field:=12, Criteria1:=TYEAR
ActiveSheet.ListObjects("tblData").Range.AutoFilter Field:=15, Criteria1:=QUARTER


ActiveWorkbook.Worksheets("DATA").ListObjects("tblData").Sort.SortFields.Add _
Key:=Range("tblData[[#All],[Score]]"), SortOn:=xlSortOnValues, Order:= _
xlDescending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("DATA").ListObjects("tblData").Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With

Set r = Nothing
Set rC = Nothing
j = 0
Set r = Range("C1", Range("C" & Rows.Count).End(xlUp)).SpecialCells(xlCellTypeVisible)

For Each rC In r
j = j + 1
If j = 11 Or j = r.Count Then Exit For
Next rC

Range(r(1), rC).SpecialCells(xlCellTypeVisible).Copy
Sheets("10").Select
Range("C7").Select
ActiveSheet.Paste


End Sub

最佳答案

我已经删除了你的一些代码,以使这个例子更容易理解。

' Sorts a table in Excel.
' Then filters table for first 10 records.
' Then copies/pastes.
Sub Example()
Dim sourceWS As Worksheet ' Spreadsheet that contains the table.
Dim sourceLO As ListObject ' Table that contains the data.
Dim targetRange As Range ' Where to copy data to.

' Populate vars.
Set sourceWS = ActiveSheet
Set sourceLO = sourceWS.ListObjects("tblData")
Set targetRange = Range("10!C7")

' Sort the table.
With sourceLO.Sort
.SortFields.Add Range("tblData[[#All], [Score]]"), xlSortOnValues, xlDescending
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With

' Limit to first ten rows (update field to select limiting column).
sourceLO.Range.AutoFilter Field:=1, Criteria1:="10", Operator:=xlTop10Items

' Copy currenlty visible cells.
sourceLO.Range.SpecialCells(xlCellTypeVisible).Copy
targetRange.PasteSpecial (xlPasteAll)
End Sub

sourceLO.Range.AutoFilter... 开始的行将表限制为前 10 个记录。

sourceLO.Range.SpecialCells... 开始的行仅复制可见行(即前 10 行)。如果要将复制/粘贴限制为某些列,请使用以下语法:
Range("tblData[Header 1], tblData[Header 2]").SpecialCells(xlCellTypeVisible).Copy

关于vba - 在 VBA 过滤表中选择第一 10 行可见单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48402803/

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