如果列中的单元格为星号(Sat)或太阳(Sun),则隐藏列

我有一个生产工作簿,每年的每个月都有一个选项卡,还有一个YTD摘要选项卡。 每个月度工作表都有显示构成工作日的不同事件或操作的行,列的date也是标题行。 我们在星期六或星期天不工作,但那些日子出现在每个电子表格上。 我想知道如何创build一个macros或VBA代码能够自动隐藏列,如果该列中的单元格包含星期六或太阳。 由于一个月有多个星期六和星期天,它会在每个电子表格中隐藏多列。 第34行是每个电子表格上的每天都有的一天,利用星期三,星期二,星期三等三个星期的日子,所以我需要一些说明如果该单元格是星期六或太阳的东西 – 隐藏该列和我的列去从B到AG。 我们为50多名员工中的每一位准备了这些电子表格中的一个,所以我可以进去手动隐藏它们,但这需要花费很多时间,而且我知道有一个更有效的解决scheme。

谢谢

我假设你知道如何设置和运行VBA代码作为macros? 如果没有,请参阅: http : //office.microsoft.com/en-us/excel-help/create-or-delete-a-macro-HP010342374.aspx#BMcreatemacrovba

试试这个代码。

 Sub HideWeekends() Dim i as integer Dim sht as Worksheet For each sht in ActiveWorkbook For i = 1 to 31 If sht.Cells(34,i) = "Sat" Or "Sun" then sht.Cells(34,1).EntireColumn.Hidden = True End if Next Next End Sub 

你将不得不修改这个来匹配你的电子表格。 如果一个月的第一天实际上是C列而不是A列,那就改变

 sht.Cells(34,i) 

 sht.Cells(34,i+2) 

等等。

我也在没有Excel的计算机上做这个,所以让我知道这是如何工作,我可以和你一起工作!

根据以上描述对此进行testing。 应该按预期工作。

 Sub Hide_Columns_Based_On_Criteria() Dim iCntr As Long, WS_Count As Integer, I As Integer WS_Count = ActiveWorkbook.Worksheets.Count For I = 1 To WS_Count ActiveWorkbook.Worksheets(I).Select For iCntr = 2 To 33 Step 1 If Cells(34, iCntr) = "Sat" Then Columns(iCntr).EntireColumn.Hidden = True End If If Cells(34, iCntr) = "Sun" Then Columns(iCntr).EntireColumn.Hidden = True End If Next iCntr Next I End Sub 

如果列范围从B变到AG,则可以对iCntr进行调整

For iCntr = 2 To 33 Step 1