如何在 Excel 中根据用户输入实时隐藏列?

作者:互联网

2026-04-14

Excel

在 Excel 中隐藏列是一项常见操作,但您是否尝试过根据特定输入值自动隐藏相应列呢?例如,在单元格中输入“AA”时自动隐藏 A 列;输入“BB”时隐藏 B 列和 C 列;输入“CC”时隐藏 D 列和 E 列;输入“DD”时则隐藏 F 列,效果如下方演示所示。本文将为您提供一段 VBA 代码,助您轻松实现这一功能。

使用 VBA 代码根据用户输入实时隐藏或显示列

使用 VBA 代码根据用户输入隐藏或显示特定列

使用 VBA 代码根据用户输入实时隐藏或显示列

要根据输入值实时隐藏指定列,请应用以下 VBA 代码:

1. 在需要隐藏列的工作表中,右键单击工作表标签,然后从上下文菜单中选择“查看代码”,参见截图。

2. 在打开的“Microsoft Visual Basic for Applications”窗口中,将以下 VBA 代码复制并粘贴到“Sheet (Code)”窗口内。

VBA 代码:根据用户输入实时隐藏列

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Updateby ExtendOffice
xcell = Range("K1").Value
Select Case xcell
Case "AA": Columns("A").EntireColumn.Hidden = False
Columns("A").EntireColumn.Hidden = True
Case "BB": Columns("B:C").EntireColumn.Hidden = False
Columns("B:C").EntireColumn.Hidden = True
Case "CC": Columns("D:E").EntireColumn.Hidden = False
Columns("D:E").EntireColumn.Hidden = True
Case "DD": Columns("F").EntireColumn.Hidden = False
Columns("F").EntireColumn.Hidden = True
Case Else
Columns("A:G").EntireColumn.Hidden = False
End Select
End Sub
注意:在上述代码中,“K1”是您输入特定文本的单元格。您应根据实际需求调整文本和列名称。此外,只需添加以下脚本即可新增其他条件:
  • 情况“AA”:Columns("A“)。EntireColumn.Hidden = False
  • Columns("A").EntireColumn.Hidden = True

一张 Excel 中的 VBA 代码窗口截图,其中已粘贴用于根据用户输入隐藏列的代码

3. 然后关闭代码窗口。现在,当您在 K1 单元格中输入“AA”并按下 ENTER 键时,A 列将自动隐藏;输入“BB”并按下 ENTER 键时,B 列和 C 列将随之隐藏,依此类推。若您输入其他任意内容或清空单元格,所有已隐藏的列将立即恢复显示,效果如下方演示所示:

使用 VBA 代码根据用户输入隐藏或显示特定列

在本例中,我将根据输入的产品名称对数据区域进行筛选:输入“Hoodie”时,仅显示 Hoodie 相关信息,其余列将立即隐藏;输入“All”时,所有列将如下方演示所示全部显示。

1. 在需要隐藏列的工作表中,右键单击工作表标签,然后从上下文菜单中选择“查看代码”,如下图所示:

2. 在打开的“Microsoft Visual Basic for Applications”窗口中,请将以下 VBA 代码复制并粘贴到“Sheet (Code)”窗口内。

VBA 代码:根据用户输入隐藏或显示列以筛选数据

Private Sub Worksheet_Change(ByVal Target As Range)
'Updateby ExtendOffice
    Dim x As Variant, y As String
     If Target.Address = "$K$1" Then
        y = Target.Value
        With Range("B1:H1")
            Application.ScreenUpdating = False
            .EntireColumn.Hidden = (y <> "All")
            If y <> "All" Then
                For Each x In .Cells
                    If x = y Then x.EntireColumn.Hidden = False
                Next
            End If
            Application.ScreenUpdating = True
        End With
    End If
End Sub
注意:在上述代码中,“K1”是您输入特定文本的单元格,“B1:H1”是包含您要筛选的产品名称的行标题。

3. 然后关闭代码窗口。现在,当您在 K1 单元格中输入产品名称时,仅对应列会显示,其余列将自动隐藏;当您输入“All”时,所有列将如下方演示所示全部显示:

相关标签:

Excel技巧