【问题标题】:Excel VBA filter merged cellExcel VBA过滤合并单元格
【发布时间】:2021-06-14 11:50:42
【问题描述】:

我有 5 个变量的 Excel 表:考试、月份(一月、二月、三月、四月)。每个月都有 3 个变量:低、中、高。而且我希望 VBA 代码进行过滤以仅显示所有月份的“高”列。我的代码工作正常,但是当我合并几个月的单元格时它不起作用:

Sub filter_high()

Columns("B:C").Select
Selection.EntireColumn.Hidden = True
Columns("E:F").Select
Selection.EntireColumn.Hidden = True
Columns("H:I").Select
Selection.EntireColumn.Hidden = True
Columns("K:L").Select
Selection.EntireColumn.Hidden = True

End Sub

【问题讨论】:

  • 但是当我把月份放在中间单元格中并进行显示“高”列的过滤器时,月份将被隐藏,因为它在中间,而在右边是高
  • 不建议使用合并单元格。
  • 更改顺序:将低、中、高转为行。测试后制作第二列。
  • 选择中心而不是合并单元格。

标签: excel vba filter


【解决方案1】:

你可以设置列的宽度,效果和可见关闭一样

Option Explicit

Sub showMediumOnly()
    Dim arr(2) As String
    Dim c As Integer
    Dim item As Variant
    
    arr(0) = "Low"
    arr(1) = "High"
    
    For c = 1 To ActiveSheet.Cells(1, Columns.Count).End(xlToLeft).Column + 2  '  loop trought columns +2 cuz merget columns
        For Each item In arr    '   checking array
            If ActiveSheet.Cells(2, c) = item And ActiveSheet.Cells(2, c) <> "" Then ActiveSheet.Columns(c).ColumnWidth = 0 '   condition to check if its target array and change width
        Next
    Next
End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-10
    • 1970-01-01
    • 2012-12-19
    • 1970-01-01
    • 2013-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多