Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 带动态字段列的VBA自动过滤器_Excel_Vba_Autofilter - Fatal编程技术网

Excel 带动态字段列的VBA自动过滤器

Excel 带动态字段列的VBA自动过滤器,excel,vba,autofilter,Excel,Vba,Autofilter,我为“按选定单元格值筛选”编写了一个代码,以创建一个快速访问工具栏图标并加快筛选速度。当过滤器在A列中启动时,它工作得非常好。但有些过滤器在B列或C列中启动。。。然后在另一列中过滤该值,跳转的空白列数与没有过滤器的空白列数完全相同。你们知道怎么修吗?如何让VBA返回字段号 Sub Filtro_Valor_Célula() 'Filtra a coluna pelo valor da célula selecionada ' Valor = ActiveCell.Value

我为“按选定单元格值筛选”编写了一个代码,以创建一个快速访问工具栏图标并加快筛选速度。当过滤器在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列中。但是我们要筛选的字段不是自动筛选中的第三个字段,而是自动筛选中的第一个字段。看起来代码
字段:=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)的位置,并减去自动筛选开始的列号。我们想从1开始计数,而不是从零开始,所以我们需要在结果中加1

希望能有帮助