隱藏/顯示不必要的行和列

問題的形成

假設我們有一張桌子,我們必須每天“跳舞”:

 

To whom the table seems small – mentally multiply it twenty times by area, adding a couple more blocks and two dozen large cities. 

任務是暫時從屏幕上刪除當前不需要工作的行和列,即 

  • 按月隱藏細節,只留下季度
  • 按月和季度隱藏總計,只保留半年的總計
  • 隱藏目前不需要的城市(我在莫斯科工作——我為什麼要看聖彼得堡?)等等。

在現實生活中,有大量此類表格的示例。

方法一:隱藏行和列

坦率地說,這種方法很原始,也不是很方便,但可以說兩句話。 可以通過右鍵單擊列或行標題並從上下文菜單中選擇命令來隱藏工作表上任何先前選擇的行或列 隱藏 (隱藏):

 

對於反向顯示,選擇相鄰的行/列,並通過右鍵單擊,分別從菜單中選擇, 顯示 (取消隱藏).

問題是您必須單獨處理每一列和每一行,這很不方便。

方法 2. 分組

如果您選擇多行或多列,然後從菜單中選擇 數據 – 組和結構 – 組 (數據——組和大綱——組),然後它們將被括在方括號中(分組)。 此外,組可以相互嵌套(最多允許 8 個嵌套級別):

一種更方便快捷的方法是使用鍵盤快捷鍵對預先選擇的行或列進行分組。 Alt+Shift+右箭頭, 並用於取消分組 Alt+Shift+向左箭頭分別。

這種隱藏不必要數據的方法要方便得多——您可以單擊帶有“+“或” - “,或在工作表左上角帶有數字分組級別的按鈕上 - 然後所需級別的所有組將立即折疊或展開。

此外, 如果您的表格包含具有匯總相鄰單元格功能的匯總行或列,也就是說,Excel 有機會(不是 100% 正確) 他將創建所有必要的組 用一個動作在桌子上——通過菜單 數據 - 組和結構 - 創建結構 (數據——組和大綱——創建大綱). 不幸的是,這樣一個函數的工作方式非常不可預測,有時在復雜的表上完全是一派胡言。 但是你可以試試。

在 Excel 2007 及更高版本中,所有這些樂趣都在選項卡上 數據 (日期) 在小組   結構體 (大綱):

方法 3. 使用宏隱藏標記的行/列

這種方法可能是最通用的。 讓我們在工作表的開頭添加一個空行和一個空列,並用任何圖標標記我們要隱藏的行和列:

現在讓我們打開 Visual Basic 編輯器 (ALT + F11),將一個新的空模塊插入我們的書(菜單 插入 - 模塊) 並在那裡複製兩個簡單宏的文本:

Sub Hide() Dim cell As Range Application.ScreenUpdating = False '禁用屏幕更新以加快每個單元格在 ActiveSheet.UsedRange.Rows(1).Cells '迭代第一行中的所有單元格 If cell.Value = "x " Then cell .EntireColumn.Hidden = True '如果在單元格 x - 隱藏列 Next For Each cell In ActiveSheet.UsedRange.Columns(1).Cells '遍歷第一列的所有單元格 If cell.Value = "x" Then cell.EntireRow.Hidden = True '如果在單元格 x - 隱藏行 Next Application.ScreenUpdating = True End Sub Sub Show() Columns.Hidden = False '取消所有隱藏行和列 Rows.Hidden = False End Sub  

你可能猜到了,宏 隱藏 隱藏和宏 顯示 – 顯示帶標籤的行和列。 如果需要,可以為宏分配熱鍵 (Alt + F8鍵 和按鈕 參數),或直接在工作表上創建按鈕以從選項卡啟動它們 開發者——插入——按鈕 (開發者——插入——按鈕).

方法 4. 隱藏具有給定顏色的行/列

假設在上面的示例中,相反,我們想要隱藏總計,即紫色和黑色行以及黃色和綠色列。 然後我們之前的宏必須稍微修改一下,而不是檢查“x”的存在,檢查填充顏色與隨機選擇的樣本單元格的匹配:

Sub HideByColor() Dim cell As Range Application.ScreenUpdating = False 對於 ActiveSheet.UsedRange.Rows(2).Cells 中的每個單元格 如果 cell.Interior.Color = Range("F2").Interior.Color 然後 cell.EntireColumn.Hidden = True If cell.Interior.Color = Range("K2").Interior.Color Then cell.EntireColumn.Hidden = True Next For Each cell In ActiveSheet.UsedRange.Columns(2).Cells If cell.Interior.Color = Range ("D6").Interior.Color Then cell.EntireRow.Hidden = True If cell.Interior.Color = Range("B11").Interior.Color Then cell.EntireRow.Hidden = True Next Application.ScreenUpdating = True End Sub  

但是,我們不能忘記一個警告:此宏僅在源表的單元格手動填充顏色時才有效,而不是使用條件格式(這是 Interior.Color 屬性的限制)。 因此,例如,如果您使用條件格式自動突出顯示表格中數量小於 10 的所有交易:

隱藏/顯示不必要的行和列

...並且您想將它們隱藏在一個動作中,則必須“完成”前一個宏。 如果您有 Excel 2010-2013,那麼您可以使用而不是屬性 室內 財產 顯示格式.Interior,它輸出單元格的顏色,不管它是如何設置的。 隱藏藍線的宏可能如下所示:

Sub HideByConditionalFormattingColor() Dim cell As Range Application.ScreenUpdating = False 對於 ActiveSheet.UsedRange.Columns(1).Cells 中的每個單元格 如果 cell.DisplayFormat.Interior.Color = Range("G2").DisplayFormat.Interior.Color 然後單元格.EntireRow.Hidden = True Next Application.ScreenUpdating = True End Sub  

將單元格 G2 作為顏色比較的樣本。 不幸的是該物業 顯示格式 Excel 僅從 2010 版本開始出現,因此如果您有 Excel 2007 或更早版本,則必須想出其他方法。

  • 什麼是宏,在哪裡插入宏代碼,如何使用它們
  • 多級列表中的自動分組

 

發表評論