Note: The other languages of the website are Google-translated. Back to English

当Excel中的数据更改时,如何自动重新应用自动筛选?

在Excel中,当您应用 筛选器 过滤数据的功能,过滤结果不会随着过滤数据中数据的更改而自动更改。 例如,当我从数据中过滤所有Apple时,现在,我将过滤后的数据之一更改为BBBBBB,但是结果不会更改,也不会显示以下屏幕截图。 本文,我将讨论如何在Excel中的数据更改时自动重新应用自动筛选。

doc auot刷新过滤器1

使用VBA代码更改数据时自动重新应用自动筛选


箭头蓝色右气泡 使用VBA代码更改数据时自动重新应用自动筛选

通常,您可以通过手动单击重新应用功能来刷新过滤器数据,但是,在这里,我将介绍一个VBA代码,供您在数据更改时自动刷新过滤器数据,请执行以下操作:

1。 转到要在数据更改时自动刷新过滤器的工作表。

2。 右键单击工作表标签,然后选择 查看代码 从上下文菜单中,弹出 Microsoft Visual Basic应用程序 窗口,请将以下代码复制并粘贴到空白的“模块”窗口中,请参见屏幕截图:

VBA代码:数据更改时自动重新应用过滤器:

Private Sub Worksheet_Change(ByVal Target As Range)
   Sheets("Sheet3").AutoFilter.ApplyFilter
End Sub

doc auot刷新过滤器2

备注:在上面的代码中, 表3的 是您使用的带有自动过滤器的工作表的名称,请根据需要进行更改。

3。 然后保存并关闭此代码窗口,现在,当您更改过滤后的数据时, 筛选器 功能将立即自动刷新,请参见屏幕截图:

doc auot刷新过滤器3


最佳办公效率工具

Kutools for Excel解决了您的大多数问题,并使您的生产率提高了80%

  • 重用: 快速插入 复杂的公式,图表 以及您以前使用过的任何东西; 加密单元 带密码 创建邮件列表 并发送电子邮件...
  • 超级公式栏 (轻松编辑多行文本和公式); 阅读版式 (轻松读取和编辑大量单元格); 粘贴到过滤范围...
  • 合并单元格/行/列 不会丢失数据; 拆分单元格内容; 合并重复的行/列...防止细胞重复; 比较范围...
  • 选择重复或唯一 行; 选择空白行 (所有单元格都是空的); 超级查找和模糊查找 在许多工作簿中; 随机选择...
  • 确切的副本 多个单元格,无需更改公式参考; 自动创建参考 到多张纸; 插入项目符号,复选框等...
  • 提取文字,添加文本,按位置删除, 删除空间; 创建和打印分页小计; 在单元格内容和注释之间转换...
  • 超级滤镜 (将过滤方案保存并应用于其他工作表); 高级排序 按月/周/日,频率及更多; 特殊过滤器 用粗体,斜体...
  • 结合工作簿和工作表; 根据关键列合并表; 将数据分割成多个工作表; 批量转换xls,xlsx和PDF...
  • 超过300种强大功能. 支持 Office / Excel 2007-2021 和 365。支持所有语言。 在您的企业或组织中轻松部署。 完整功能 30 天免费试用。 60 天退款保证。
kte选项卡201905

Office选项卡为Office带来了选项卡式界面,使您的工作更加轻松

  • 在Word,Excel,PowerPoint中启用选项卡式编辑和阅读,发布者,Access,Visio和Project。
  • 在同一窗口的新选项卡中而不是在新窗口中打开并创建多个文档。
  • 每天将您的工作效率提高50%,并减少数百次鼠标单击!
officetab底部
按评论排序
注释 (36)
5中的5评分 · 1评级
该评论由网站上的主持人最小化
你好,我如何在谷歌金融中使用所有这些? Tks
该评论由网站上的主持人最小化
不错..真的我需要它
该评论由网站上的主持人最小化
我想在一张纸上进行更改以使其他多张纸自动过滤,我该如何更改此代码? 例如:SheetA 已更改,这会导致 Sheet1、Sheet2 和 Sheet3 应用其自动过滤器。 谢谢!
该评论由网站上的主持人最小化
如果单元格设置为 =sheet1!E6,我正在为工作表的正面执行此操作。 更改时不会应用过滤器。 如果我更改背页中的数字,它会调整前面但不过滤。 如果调整公式以过滤它的标准,它会重新应用。 我能做些什么?
该评论由网站上的主持人最小化
使用此
Private Sub Work_Change(ByVal Target As Range)
Activesheet.AutoFilter.ApplyFilter
END SUB
该评论由网站上的主持人最小化
我根本无法让它为我工作。 我正在尝试从主表中获取并让它只获取适用于每个选项卡上的某些项目经理的工作,其中包含他们的名字。 我还希望它在我进行更改时自动刷新。
该评论由网站上的主持人最小化
这个命令全部假装什么都不做。 完全尝试但没有用。
该评论由网站上的主持人最小化
效果很好,节省了我很多时间和麻烦。真的很棒的提示。非常感谢您的帮助
该评论由网站上的主持人最小化
该解决方案完美运行。 谢谢你写下来! 如果有人遇到麻烦,有几件事需要考虑。

首先,Worksheet_Change 事件被逐张调用。 这意味着,如果您有多个需要更新过滤器的工作表,您将需要响应所有这些事件。 每个工作表都有一个 Worksheet_Change 子例程,而不是整个工作簿的一个子例程(一个例外 - 请参阅下面的注释)。

其次,作为第一个的后续,代码必须放在特定于要监控的工作表的代码模块中。 进入 VB 编辑器后,它很容易(不经意间)切换代码模块,因此必须注意将其放置在特定于要监视数据更改的工作表中。

第三,这是未经证实的,但可能是一个错误点。 该示例使用“Sheet1”、“Sheet2”等工作表名称。如果您已重命名工作表,则可能需要更新代码。 请注意,在示例中,Sheet7 的名称为“dfdf”。 如果你想在那里更新过滤器,你需要使用;
Sheets("dfdf").AutoFilter.ApplyFilter
不是;
Sheets("Sheet7").AutoFilter.ApplyFilter

更新文章可能会很好,包括带有重命名工作表的示例。


最后,如果您想监控一张表的数据更改,但更新多张表上的过滤器,那么您只需要一个子程序,放置在您正在监控的工作表的代码模块中。 代码看起来像这样;

# (代码必须放在工作表中才能监控数据变化)
私人子Worksheet_Change(按目标的ByVal目标)
Sheets("Sheet1").AutoFilter.ApplyFilter
Sheets("Sheet2").AutoFilter.ApplyFilter
Sheets("Sheet3").AutoFilter.ApplyFilter
Sheets("Sheet4").AutoFilter.ApplyFilter
END SUB
该评论由网站上的主持人最小化
你好,迈克,
感谢您的详细解释。
该评论由网站上的主持人最小化
很好的解释,谢谢。

但是如何在创建新工作表时触发 Sheets("Sheet3").AutoFilter.ApplyFilter ?
由于我无法在尚不存在的工作表上编写您提到的代码
该评论由网站上的主持人最小化
太好了谢谢!
该评论由网站上的主持人最小化
像冠军一样工作,如此简单。 非常感谢!
该评论由网站上的主持人最小化
这似乎很棒。 你能告诉我如何对排序而不是过滤器做同样的事情吗?
该评论由网站上的主持人最小化
你好,克里斯,
可能,下面的文章可以解决你的问题,请查看:

https://www.extendoffice.com/documents/excel/2592-excel-auto-sort-by-value.html

请尝试一下!
该评论由网站上的主持人最小化
嗨,这很好用,但仅在手动更改表中的数据时。

我有一个“前十名/排行榜”样式的过滤表,该表是从单独的工作表上的数据输入中填充的(实际上,数据在到达表之前要经过 3 个工作表)。 当数据输入工作表中的数据发生更改时,排行榜表格数据会更新,但过滤器不会自动刷新。
关于如何做到这一点的任何想法?
非常感谢。
Alex
该评论由网站上的主持人最小化
我有她同样的问题。 有人可以帮助我们吗?
该评论由网站上的主持人最小化
我有同样的问题。 我正在尝试自动过滤包含来自工作表 2 的数据的工作表 1。它仅在我更改工作表 2 上的数据时才有效,而不是工作表 1。
关于为什么这不起作用以及如何解决它的任何想法?
该评论由网站上的主持人最小化
嗨,这似乎很好用,但是当同一个工作表(选项卡)上有多个过滤器时,我遇到了问题。 我将单元格范围转换为表格,以允许在同一个工作表中使用单独的多个过滤器。 此示例似乎仅更新其中一个表/过滤器。 关于如何更新工作表中的所有表/过滤器的任何建议?

非常感谢,

Tom
该评论由网站上的主持人最小化
嗨,汤姆,
本文中的代码适用于工作表中的多个表格,您只需在更改数据后按 Enter 键,而不是单击到其他单元格。
请尝试一下。
该评论由网站上的主持人最小化
寺院卡西

桑加特蒙班图
该评论由网站上的主持人最小化
该评论由网站上的主持人最小化
出色而简单的操作。 非常感谢!
该评论由网站上的主持人最小化
嗨,

这段代码很好用,非常感谢。

但是,我有一个小问题 - 如果我更改不属于表格的任何单元格中的值,我会收到运行时错误消息:

“运行时错误‘91’:

对象变量或未设置块变量”


我有调试或结束选项,继续选项是灰色的。 我可以单击“结束”,代码仍然有效,但是每次更改后都必须处理这个弹出窗口非常烦人。

任何人都有类似的经验或关于如何排序的建议?

谢谢!
该评论由网站上的主持人最小化
你好,大卫,
要解决您的问题,您可以应用以下代码:

私人子Worksheet_Change(按目标的ByVal目标)
出错时继续下一步
Sheets("Sheet3").AutoFilter.ApplyFilter
END SUB

请尝试一下,希望对您有所帮助!
该评论由网站上的主持人最小化
嗨,天阳,


我已经实施了你的解决方案,它确实是固定的。

多谢了!
该评论由网站上的主持人最小化
您好,我遇到了同样的问题,粘贴了新代码并更改了工作表的名称,但没有任何反应,过滤器没有更新
该评论由网站上的主持人最小化
这里也有同样的问题,有更新的解决方案吗?
该评论由网站上的主持人最小化
在 Office 365 上根本无法使用它
有什么建议么
该评论由网站上的主持人最小化
嗨,非常感谢您的帮助。 有些东西不适合我。 这是故事。

Sheet1 具有可变数据。 Sheet3 具有静态数据和过滤器。 “Sheet3”上的过滤条件来自 Sheet1。 Sheet1 的数据来自 Sheet3 上的过滤结果。

Sheet3有代码:

Private Sub Worksheet_SelectionChange(作为范围的ByVal目标)
Range("A1:U14").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range("A22:U23"), CopyToRange:=Range("A25:U26"), Unique:=False
END SUB

如果我在 Sheet3 上做任何事情,效果会很好。 没问题。 谢谢!

起初我在 Sheet1 上有代码:

私人子Worksheet_Change(按目标的ByVal目标)
Sheets("Sheet3").AutoFilter.ApplyFilter
END SUB

这导致错误“运行时错误 91,对象变量或未设置块”。

我根据注释将代码更改为:

私人子Worksheet_Change(按目标的ByVal目标)
出错时继续下一步
Sheets("Sheet3").AutoFilter.ApplyFilter
END SUB

现在我没有收到错误,但 Sheet3 和 Sheet1 上的数据不会改变。 换句话说,当我对 Sheet3 进行更改时,不会发生将过滤器应用于 Sheet1 的事件。 我打没关系或在更改在 Sheet3 上设置的 Sheet1 过滤条件单元格后单击另一个单元格。

顺便说一句,我希望如果我想在 Sheet1 上有多个单元格,这会导致除了 Sheet4 之外的 Sheet 5 和 3 上的过滤器,我需要 Sheet 1 上的代码来阅读:

私人子Worksheet_Change(按目标的ByVal目标)
出错时继续下一步
Sheets("Sheet3").AutoFilter.ApplyFilter
Sheets("Sheet4").AutoFilter.ApplyFilter
Sheets("Sheet5").AutoFilter.ApplyFilter
END SUB

再次感谢!
该评论由网站上的主持人最小化
嗨,

这是一个很棒的代码,谢谢。 我遇到的唯一问题是我在单独的图表表上使用下拉菜单。 如果我手动更改与下拉列表关联的单元格中的值,它会起作用。 但是当我尝试只使用下拉菜单时,它不会更新。 有什么想法吗?
该评论由网站上的主持人最小化
我实际上有来自另一个 Excel 文件的数据,这些文件被导入到名为“数据库”的 Excel 表中。 然后我在同一个 Excel 文件中导入这些数据,但在另一个 ExcelSheet“概述”中。 我希望当原始源中的数据发生更改时,过滤器在“概述”表中应用。 感谢您转发可以帮助我的人:)。 PS不能在第一个excelsheet中使用VBA
这里还没有评论
加载更多
留下你的意见
以访客身份发帖
×
评价此帖子:
0   产品特性
建议地点

关注我们

版权所有 © 2009 - extendoffice.com。 | 版权所有。 供电 ExtendOffice。 | 网站地图
Microsoft和Office徽标是Microsoft Corporation在美国和/或其他国家的商标或注册商标。
受Sectigo SSL保护