如果列中的单元格等于Sat或Sun,则隐藏列

时间:2014-11-21 20:51:10

标签: excel

我有一个生产工作簿,其中包含一年中每个月的标签和YTD摘要标签。每个月工作表都有行,显示构成工作日的不同事件或操作,列的日期为标题行。我们不在周六或周日工作,但那些日子出现在每个电子表格上。我想知道如何创建一个宏或VBA代码,以便能够自动隐藏列,如果该列中的单元格包含星期六或太阳。由于一个月内有多个星期六和星期日,它会在每个电子表格中隐藏多个列。第34行是每个电子表格上的wek日,利用一周中的三位数字 - 星期一,星期二,星期三等,所以我需要一些东西,说明该单元格是星期六还是太阳 - 隐藏该列和我的列去从B到AG。我们为50多名工作人员中的每一个提供了这些电子表格中的一个,因此我可以进入并手动隐藏它们,但这需要花费大量时间,我知道有更有效的解决方案。

由于

2 个答案:

答案 0 :(得分:0)

我假设您知道如何设置和运行VBA代码作为宏?如果没有,请参阅: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的电脑上做这个,所以让我知道它是如何工作的,我可以和你一起工作!

答案 1 :(得分:0)

根据您的描述对此进行测试。应该按预期工作。

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