gpt4 book ai didi

vba - 反向循环过滤列表的快速方法?

转载 作者:行者123 更新时间:2023-12-01 11:41:17 25 4
gpt4 key购买 nike

我有一张包含大量自动筛选行(>200,000)的工作表。我正在尝试“向上​​”循环一列,直到找到与当前单元格不同的第一个单元格。我可以使用以下方法“向下”循环遍历可见单元格:

For Each cl In rng.SpecialCells(xlCellTypeVisible)
'check for different value
Next cl

我还可以使用以下方法“向上”循环跳过隐藏的行:

For i = rng.Count To 1 Step -1
If rng.Cells(i).EntireRow.Hidden Then
'do nothing
ElseIf 'check different value
End If
Next i

但是对于大量的隐藏行,即使只有几百个可见行,也可能需要一段时间才能跳过所有这些行。我试过使用 rng.SpecialCells(xlCellTypeVisible) 并通过它们向后退,但它似乎也通过隐藏的单元格。

  1. 有没有办法颠倒For Each 循环的顺序?
  2. 有更快的方法吗?

谢谢

最佳答案

Sub Tester()
Dim x As Long, n As Long
Dim a() As Long
Dim rng As Range, c As Range, vis As Range
Dim sht As Worksheet

Set sht = ActiveSheet
Set rng = sht.Range("A1:A1000")

Set vis = rng.SpecialCells(xlCellTypeVisible)
n = vis.Cells.Count
ReDim a(1 To n)
x = 1

For Each c In vis.Cells
a(x) = c.Row
x = x + 1
Next c

For x = n To 1 Step -1
Debug.Print a(x), sht.Cells(a(x), 1)
Next x
End Sub

关于vba - 反向循环过滤列表的快速方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20500833/

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