残業を減らす!Officeテクニック

Excelで必要な列のみを取り出してスクロールバー付きのコンパクトな表を作るテク

縦に長い表をコンパクトにして必要な列だけ表示したい!

 時間軸で集計するデータは縦方向に長くなりますよね。フィルターを使って絞り込むことが多いと思いますが、繰り返しフィルター操作をするよりも、スクロールして目視したほうが手っ取り早い! という人もいるのではないでしょうか。

 ただ、1画面に数十行のデータが表示された状態で、長時間見続けると目が疲れますよね。また、チェックする必要のない列が含まれているとさらに負担が増えます。例えば、以下の表で[販売日][席][販売数]だけ確認したいなら、その他の列は隠したいような状況です。

販売データの例。例えば、チェックする内容が[販売日][席][販売数]なら、[単価]と[販売金額]の列は隠しておきたい

 フィルターと列の非表示で実現できる課題ではありますが、今回はスクロールバー付きで、必要な列のみのコンパクトな表を作るテクニックを紹介します。

コンパクトな表を準備する

 コンパクトな表をわかりやすく仕上げるために、任意のセルに列の見出しを用意しておきます。ここでは、元の表から[単価]と[販売金額]を除く、[販売日][席][販売経路][販売数]としました。表の高さは10行とします。

 セルL1は、後ほどスクロールバーとリンクさせます。ここでは、「0」と直接入力しておいてください。セルH2に入力するOFFSET関数の引数[行数]として利用します。

 OFFSET関数は、指定したセルから行や列をずらして(オフセットして)値を取得する関数です。オフセットする数を2つめの引数[行数]と3つめの引数[列数]に指定します。ここでは、列方向にオフセットする必要はないので「0」とします。

コンパクトな表の見出しを用意しておく。セルL1には「0」と入力しておく
セルH2に「=OFFSET(A2,$L$1,0)」と入力する
数式をセルK2までコピーした
セルK2では[販売数」を表示したいため数式を「=OFFSET(E2,$L$1,0)」と修正しておく。セルE2を参照するという意味
セルH2~K2の数式を10行分コピーした

 これでコンパクトな表の準備は完了です。続けてスクロールバーを配置しましょう。スクロールバーは[開発]タブから挿入するので、[Excelのオプション]から[開発]タブを表示
しておいてください。

[ファイル]タブから[Excelのオプション]を表示して、[リボンのユーザー設定]から[開発]にチェックを付けておく

スクロールバーをリンクさせる

 上記の手順で、10行分のデータを表示できました。後は、スクロールバーを配置して、OFFSET関数から参照するセルL1の値が切り替わるようにすれば完成です。試しにセルL1の値を変更して、スクロールバーと連動させた時の動作を確認してみましょう。

現状では「0」と入力されている。試しに「3」と入力すると……
セルA2から3つ下にオフセットした値が表示される。他のセルも同時に切り替わる

 スクロールバーは[開発]タブの[挿入]ボタンから挿入します。挿入後は[Alt]キーを押しながら、位置やサイズを調整すると、セルに吸着するのできれいに配置できます。

 [コントロールの書式設定]に指定する[最大値]には、元の表の行数からスクロールバーを配置する表の行数を引いた数値を指定します。ここでは、元の表が100行、コンパクトな表が10行なので、「90」としています。また、[リンクするセル]は、先ほど数値を変更して試したセルL1を絶対参照で指定します。

[開発]タブの[挿入]-[スクロールバー]をクリックする
任意の位置をドラッグする。クリックするだけでも挿入できる
[Alt]キーを押しながら、位置やサイズを調整するときれいに配置できる
挿入したスクロールバーを右クリックして、[コントロールの書式設定]を選択する
[最小値]は「0」のまま、[最大値]は元の表の行数からスクロールバーを配置する表の行数を引いた数値(ここでは「90」)を入力する。[リンクするセル]はセルを指定する。セルをクリックすると自動的に絶対参照で指定される。[OK]をクリックする
任意のセルをクリックして、スクロールバーの選択を解除する
スクロールバーを動かすとセルL1の値が切り替わり、表の内容も切り替わる

 ここでは、同じワークシートにある表を参照しましたが、他のワークシートの表を参照するコンパクトな表の作成も可能です。例えば、1枚のワークシートに複数のグラフと表を並べて比較したいときなど、スペースを省略したいときにも使えるテクニックです。