gpt4 book ai didi

vba - Excel VBA在自动筛选下拉菜单中选择下一个选项

转载 作者:行者123 更新时间:2023-12-02 16:01:30 26 4
gpt4 key购买 nike

我有几列,有几百行数据。我的角色之一是查看数据(最常见于第 2 列),所以我要做的就是单击列标题上的小下拉箭头以打开自动筛选列表,取消选择第一个值,然后选择下一个值。然后,同样打开菜单,取消选择第二个值并选择第三个值。

值的数量也没有固定数量。不同的数据表具有不同的数据量。数据通常类似于 0,10,40,50,60,.... 同样,它不是固定的。然而它是一个数组。所有数据均已按升序排列。

我需要什么:

  1. 最好是一个单击按钮(针对第 2 列),用于取消选择当前选定的值,选择下一个值并将其过滤掉
  2. 相反。 IE。取消选择当前值,选择上一个值

本质上,我的数据需要一个前进后退按钮。

这是我尝试记录自己的行为时得到的结果。

Sub a()

ActiveSheet.Range("$A$2:$V$609").AutoFilter Field:=2, Criteria1:
="750385/000"
ActiveSheet.Range("$A$2:$V$609").AutoFilter Field:=2, Criteria1:
="750385/010"
ActiveSheet.Range("$A$2:$V$609").AutoFilter Field:=2, Criteria1:
="750385/017"

结束子

感谢任何帮助!!

最佳答案

有一种方法可以读出当前的过滤器,从中您可以循环遍历该列,直到找到该值。在这里,您只需跳转到下一行中的值,现在您可以将其放入过滤器中。

所以总而言之,这个方法将是您的“前进”按钮

Sub test()
Dim startRow As Integer
startRow = 2
Dim rangeString As String
rangeString = "$A$2:$V$609"


Dim rng As Range
Set rng = Range(rangeString)

Dim currentCrit As String
currentCrit = rng.Parent.AutoFilter.Filters(2).Criteria1
currentCrit = Right(currentCrit, Len(currentCrit) - 1)

Dim i As Integer
For i = startRow To startRow + rng.Rows.Count
If Cells(i, 2).Value = currentCrit Then
i = i + 1
Exit For
End If
Next

If i > rng.Rows.Count + startRow Then
Exit Sub
End If

ActiveSheet.Range(rangeString).AutoFilter Field:=2, Criteria1:=Cells(i, 2).Value
End Sub



注意:如果 B 列中有重复项,则此方法将不起作用,如果是这样,请使用以下内容替换 For-Loop 部分:

Dim i As Integer
Dim bool As Boolean
bool = False
For i = startRow To startRow + rng.Rows.Count
If Cells(i, 2).Value = currentCrit Then
bool = True
End If

If bool And Cells(i, 2).Value <> currentCrit Then
Exit For
End If
Next

希望我能帮忙。

关于vba - Excel VBA在自动筛选下拉菜单中选择下一个选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45320561/

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