excel - 具有动态字段列的 VBA 自动过滤器
问题描述
我制作了一个按选定单元格值进行过滤的代码,以创建一个快速访问工具栏图标并使其过滤速度更快。当过滤器从 A 列开始时,它工作得很好。但是一些过滤器从 B 或 C 列开始......并且该值在另一列中被过滤,跳过完全相同数量的没有过滤器的空白列。你们知道怎么解决吗?如何让 VBA 返回字段编号?
Sub Filtro_Valor_Célula()
'Filtra a coluna pelo valor da célula selecionada
'
Valor = ActiveCell.Value
ActiveSheet.Range(ActiveSheet.AutoFilter.Range.Address).AutoFilter Field:=ActiveCell.Column, Criteria1:=Valor
End Sub
解决方案
我在理解您的问题时遇到了一些麻烦,但我认为您的情况如下所示:
在此示例中,如果运行给定的代码,我们将在 E 列而不是 C 列上进行过滤。
这是因为选定的单元格在第 3 列中。但是我们要过滤的字段不是自动过滤器中的第三个字段——它是自动过滤器中的第一个字段。看起来这段代码Field:=ActiveCell.Column
没有为我们做正确的事情。
试试这个:
Sub Filtro_Valor_Célula()
'Filtra a coluna pelo valor da célula selecionada
'
Valor = ActiveCell.Value
FieldToFilter= ActiveCell.Column - ActiveSheet.AutoFilter.Range.Column + 1
ActiveSheet.Range(ActiveSheet.AutoFilter.Range.Address).AutoFilter Field:=FieldToFilter, Criteria1:=Valor
End Sub
这里我们取选定列的位置 (ActiveCell.Column) 并减去我们的 AutoFilter 开始的列号。我们希望从 1 而不是零开始计数,所以我们需要在结果中加 1。
希望能帮助到你。
推荐阅读
- sql - 为什么我的 datediff 表达式的输出要返回括号中的天数?
- php - 相同的键需要两个数组索引 - PHP
- c# - 游戏视图中不显示子弹
- excel - 宏 VBA 的调度部分
- php - 如何转换 \u009
- amazon-s3 - 将数据从 QlikSense 云导出到 AWS S3 存储桶
- keras - 如何在预训练模型中的每个 conv2d 层之后循环添加 BatchNormalization
- postgresql - 有没有人设法使用 Direct to SwiftUI 运行 DVDRental 示例?
- reactjs - 向输入字段添加箭头函数会导致错误
- matlab - 生成一个只知道 1 的位置的二进制矩阵 H