問題の定式化
毎日「踊る」必要があるテーブルがあるとします。
To whom the table seems small – mentally multiply it twenty times by area, adding a couple more blocks and two dozen large cities.
タスクは、現在作業に不要な行と列を画面から一時的に削除することです。つまり、
- 詳細を月ごとに非表示にし、四半期のみを残す
- 月と四半期ごとの合計を非表示にし、半年間の合計のみを残す
- 現時点で不要な都市を非表示にします (私はモスクワで働いていますが、なぜサンクトペテルブルクを見る必要があるのでしょうか?)、など。
実生活では、そのようなテーブルの例がたくさんあります。
方法 1: 行と列を非表示にする
率直に言って、この方法は原始的であまり便利ではありませんが、それについては XNUMX つの言葉が言えます。 シートで以前に選択した行または列は、列または行ヘッダーを右クリックし、コンテキスト メニューからコマンドを選択することで非表示にできます。 隠す (隠す):
反転表示の場合は、隣り合う行・列を選択し、右クリックでそれぞれメニューから選択し、 ディスプレイ (再表示).
問題は、各列と行を個別に処理する必要があることです。これは不便です。
方法 2. グループ化
複数の行または列を選択してから、メニューから選択した場合 データ – グループと構造 – グループ (データ — グループとアウトライン — グループ)の場合、それらは角括弧で囲まれます (グループ化されます)。 さらに、グループを別のグループにネストできます (最大 8 つのネスト レベルが許可されます)。
より便利で迅速な方法は、キーボード ショートカットを使用して、事前に選択した行または列をグループ化することです。 Alt+Shift+右矢印、およびグループ解除用 Alt+Shift+左矢印それぞれ。
不要なデータを非表示にするこの方法は、はるかに便利です。「+」または「 - 」、またはシートの左上隅に数値のグループ化レベルがあるボタンを使用すると、目的のレベルのすべてのグループが一度に折りたたまれたり展開されたりします。
だから、 テーブルに、隣接するセルを合計する機能を備えた集計行または集計列が含まれている場合、つまり、Excel が 彼は必要なすべてのグループを作成します メニューを介して、XNUMX回の移動でテーブルに データ – グループと構造 – 構造の作成 (データ — グループとアウトライン — アウトラインの作成). 残念ながら、そのような関数は非常に予測不可能に動作し、複雑なテーブルでは完全にナンセンスな場合があります。 しかし、あなたは試すことができます。
Excel 2007 以降では、これらすべての楽しみがタブにあります 且つ (日にち) グループで Structure (概要):
方法 3. マークされた行/列をマクロで非表示にする
この方法はおそらく最も汎用性があります。 空の行と空の列をシートの先頭に追加し、非表示にする行と列をアイコンでマークしましょう。
それでは、Visual Basic Editor を開きましょう (Alt + F11)、新しい空のモジュールをブックに挿入します(メニュー インサート – モジュール) を開き、そこに XNUMX つの単純なマクロのテキストをコピーします。
Sub Hide() Dim cell As Range Application.ScreenUpdating = False '画面の更新を高速化するのを無効にする For Each cell In ActiveSheet.UsedRange.Rows(1).Cells '最初の行のすべてのセルを反復する If cell.Value = "x " 次に 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 For Each cell In ActiveSheet.UsedRange.Rows(2).Cells If cell.Interior.Color = Range("F2").Interior.Color Then cell.EntireColumn.Hidden = True の場合 cell.Interior.Color = Range("K2").Interior.Color Then cell.EntireColumn.Hidden = True Next ActiveSheet.UsedRange.Columns(2).Cells の各セルの場合 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
ただし、10 つの注意点を忘れてはなりません。このマクロは、ソース テーブルのセルが条件付き書式を使用せずに手動で色で塗りつぶされた場合にのみ機能します (これは Interior.Color プロパティの制限です)。 たとえば、条件付き書式を使用して、テーブル内の数字が XNUMX 未満のすべての取引を自動的に強調表示した場合:
…そして、一度にそれらを隠したい場合は、前のマクロを「終了」する必要があります。 Excel 2010-2013 をお持ちの場合は、プロパティの代わりに使用して取得できます インテリア 財産 DisplayFormat.Interior、設定方法に関係なく、セルの色を出力します。 青い線を非表示にするマクロは、次のようになります。
Sub HideByConditionalFormattingColor() Dim cell As Range Application.ScreenUpdating = False For Each cell In ActiveSheet.UsedRange.Columns(1).Cells If cell.DisplayFormat.Interior.Color = Range("G2").DisplayFormat.Interior.Color Then cell .EntireRow.Hidden = True Next Application.ScreenUpdating = True End Sub
セル G2 は、色比較のサンプルとして取得されます。 残念ながら物件 DisplayFormat 2010年版からのみExcelに登場したので、2007年以前のExcelをお持ちの方は別の方法を考える必要があります。
- マクロとは何か、マクロ コードを挿入する場所、使用方法
- マルチレベル リストでの自動グループ化