2014-11-21 65 views
1

我有一個生產工作簿,其中包含一年中每個月份的選項卡和YTD摘要選項卡。每個月度工作表都有顯示組成工作日的不同事件或操作的行,並且列中的日期是標題行。我們在週六或週日不工作,但那些日子出現在每個電子表格中。我想知道如何創建宏或VBA代碼,以便能夠自動隱藏列,如果該列中的單元格包含星期六或太陽。由於一個月內有多個星期六和星期日,它會在每個電子表格上隱藏多列。第34行是每個電子表格上的一天,每週使用三位數日期 - 週一,週二,週三等,所以我需要說明如果該單元格是星期六或太陽 - 隱藏該列和列從B到AG。我們爲每個超過50名員工準備了這些電子表格中的一張,這樣我就可以進入並手動隱藏它們,但這需要很長時間,我知道有更高效的解決方案。如果列中的單元格隱藏列,則爲星期六或太陽

謝謝

+0

列範圍內變化好像它可能是值得考慮不必使用開始與那些列。 – pnuts 2014-11-21 21:58:30

+0

如果匹配,使用條件格式將列寬設置爲「1」。無需代碼。 – 2014-11-21 22:54:56

回答

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的計算機上這樣做,所以讓我知道如何工作,我可以和你一起工作!

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 

您可以調整iCntr如果從B到AG

For iCntr = 2 To 33 Step 1

相關問題