如何在Excel中创建宏以隐藏其他所有列
我目前有一个Excel电子表格,每列代表音乐文件中特定类型的数据(即艺术家,专辑,标题)。
我想要做的是通过为每种类型的数据(即artistOld,artistCurrent,albumOld,albumCurrent,titleOld,titleCurrent)提供两列来显示更改,但大多数时候用户不希望看到旧列我想要的是一个只显示/隐藏旧列的宏。
BTW我知道当你将鼠标悬停在一个单元格上时你可以添加注释(比如工具提示)所以理论上这将是一种存储旧数据的方法,但这不是我想要的。我希望用户能够同时查看所有数据,而不仅仅是某个特定字段的旧数据。
没有旧值列的屏幕截图
答案 0 :(得分:1)
这将隐藏所有偶数列:
Sub hiiddee()
Dim i As Long
Application.ScreenUpdating = False
For i = 16384 To 2 Step -2
Cells(1, i).EntireColumn.Hidden = True
Next i
Application.ScreenUpdating = True
End Sub
修改#1:强>
这是对BrandonBarney的想法的改编。它假定要隐藏/取消隐藏的列的列标题包含字符串 Old :
Sub BrandonsIdea()
Dim i As Long, KolKount As Long, r As Range
With ActiveSheet.UsedRange
KolKount = .Columns.Count + .Column - 1
End With
For i = 1 To KolKount
With Cells(1, i)
If InStr(1, .Value, "Old") > 0 Then
.EntireColumn.Hidden = Not .EntireColumn.Hidden
End If
End With
Next i
End Sub
每次运行时,都会切换隐藏/取消隐藏。
编辑#2一般说明:
宏非常易于安装和使用:
如果保存工作簿,宏将随之保存。 如果您在2003年之后使用的是Excel版本,则必须保存 该文件为.xlsm而不是.xlsx
删除宏:
要使用Excel中的宏:
要了解有关宏的更多信息,请参阅:
http://www.mvps.org/dmcritchie/excel/getstarted.htm
和
http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx
必须启用宏才能使其正常工作!
修改#3:强>
此版本将遍历所有工作表:
Sub BrandonsIdea_2_The_Sequel()
Dim i As Long, KolKount As Long, r As Range
Dim sh As Worksheet
For Each sh In Sheets
With sh.UsedRange
KolKount = .Columns.Count + .Column - 1
End With
For i = 1 To KolKount
With sh.Cells(1, i)
If InStr(1, .Value, "Old") > 0 Then
.EntireColumn.Hidden = Not .EntireColumn.Hidden
End If
End With
Next i
Next sh
End Sub
答案 1 :(得分:1)
正如我在评论中所述,首先尝试数据透视表方法。不要误会我的意思,我喜欢VBA,但我也知道SO上的许多用户会尝试将VBA用于琐碎的任务,而这些解决方案往往很脆弱。我非常支持在VBA之前学习Excel。
这是我的样本表。请注意,这是表格。如果您有结构化数据,应格式化为表格,名称有意义。选择CTRL+T
以格式化为表格。
接下来,我插入一个数据透视表:
让我们在没有额外列的情况下复制我们的表格:
通过去设计'关闭Grand Totals以及小计,让它变得漂亮和漂亮。将报表布局更改为表格,并重复所有项目标签:
而且瞧!现在我可以在原始表格中添加我想要的任何内容并点击Refresh
按钮,它可以很好地工作,或者我可以通过从行中删除它来轻松地添加/删除我的数据库中的列。我还可以添加摘要(例如歌曲数量?)作为聚合。