我正在尝试实现一个 VBA 代码,该代码隐藏所选过滤器的“不必要”列。
我正在使用切片器来简化表的过滤,但每个子集都有不同的信息(数据条目)。
例如。过滤类型 A 在 E 和 F 列中有数据,而 B 类型在 E 和 G 等中有数据。
现在我希望在任何给定时刻只显示其中包含数据的列,以使数据集更加用户友好。
我目前正在处理此代码:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim c As Long
Dim n As Long
Application.ScreenUpdating = False
n = Rows(2).Find(What:="*", SearchDirection:=xlPrevious).Column
For c = 3 To n
Cells(3, c).EntireColumn.Hidden = (Application.CountA(Columns(c)) < 2)
Next c
Application.ScreenUpdating = True
End Sub
您可能会注意到,这不会从切片器中隐藏基于“活动过滤器”的列,也不会在更改过滤器时触发(例如,在切片器中选择 B 类而不是 A 类)