VBA

【エクセル・VBA】テーブルのデメリット。それでも使った方がいい場合(メリット)

  • デメリット:テーブルを扱うには慣れが必要です。
    • 行・列の削除が面倒
    • 解除が面倒
    • デザインが崩れる
    • 共有化できない
  • メリットも大きい
    • 集計が簡単
    • 範囲が自動的に変更される
    • 関数の組み立てが直感的
    • VBAとの相性が良い
  • どういう場面で使うべきか
    • データベースを扱う
    • テーブルのメンテナンスが
      複雑な処理が必要で不特定多数が触れる機会があるならやめた方が無難
    • 自分の手元で使うのであれば積極的に使うべき

こんにちは、hokkyokunです。
テーブルは使っていますか?
テーブルは便利で、最初は何でもテーブル化していたのですが、
最近はテーブルにするケースとそうではないケースを分けるようになってきました。

私は社内で関数を含んだエクセルや、VBAを記述したマクロファイルを使って、業務の効率化をしています。
自分の仕事を効率化することもあれば、他の人にファイルを渡して、組織として使用してもらう場合もあります。
社内でも表彰をされたこともあるので、その中での経験とマイルールを
ご紹介したいと思います。

テーブルのデメリット

一言でいうと扱いに慣れが必要です。

もう少し具体的に言うと

  • 行・列の削除が面倒(Deleteキーで削除はダメ)
  • 解除が面倒
  • 色が変わる(デザインが崩れる)
  • 共有化できない

一つ一つ説明します。

行・列の削除が面倒

行の削除をDeleteキーで値だけ消すと
テーブル範囲が修正されません。

正しく処理するためには

  1. 消したい行のセルを選択(セル一個でいい)
  2. 右クリック ⇒ 削除 ⇒ テーブル行 をクリックする

解除が面倒

テーブルの解除が面倒な理由は
大きく二つあります。

  • 解除のボタンがわかりにくい
  • デザインはそのまま残る

テーブルを解除してみます。

  1. テーブル内のどこでもいいので、範囲内のセルを選択
  2. リボン ⇒ デザインタブ ⇒ 「範囲に変更」をクリック。

テーブルは解除されるのですが、デザインがそのまま残りこれを戻すのに一苦労かかります。

テーブルではなくなったがデザインは元のまま

正しい処理は

  1. テーブルの範囲内のセルを選択
  2. リボンのデザインタブを選択
  3. テーブルスタイル ⇒ 左上の無色を選ぶとテーブルのデザインが無色になる
  4. この後に、「範囲に変更」をクリック


デザインが崩れる

表を自分で見やすく変えてていたとしても
テーブル化することでデザインが崩れることがあります。

そんなときは、上記と同様に、

  1. テーブルの範囲内のセルを選択
  2. リボンのデザインタブを選択
  3. テーブルデザイン、左上の無色を選ぶとテーブルのデザインが無色になる

共有化できない

ブックの共有化はテーブル化しているファイルではエラーを発生させます。
基本的にはテーブルがある状態で共同編集はできないと思った方がいいかもしれません。

テーブルはメリットも大いにある

テーブルはデメリットばかりかというと
もちろんそうではありません。
使い方によってはデメリットをはるかに上回る強力な武器になります。

集計がすごく楽

  • テーブルを使うメリットの90%はこれじゃないでしょうか。
    平均値や、データ個数、合計はもちろん、
    最大値や標準偏差などデータ解析にも使える集計が取れます。
  • また、SUBTOTAL関数を使っているので
    フィルターにも対応しており
    フィルタ後の集計が取れます。

以下の操作で集計行を出すことができます。

  1. テーブルの範囲内のセルを選択
  2. リボン ⇒ デザインタブ ⇒ 集計行 をクリック
  3. テーブルの最下部に集計行が出現

範囲が自動的に変わる

テーブル範囲が自動で変わるので
行や列の修正が容易にできます。

ただし、上記で解説した通り、データ削除は注意が必要です。

関数の組み立てが直感的

これも大きなメリットですね。
二つあります。

  • 関数の参照先を列で指定できる
  • 作った関数を列全体にワンクリックで反映させる

試しに、税込み金額の関数を作ってみます。
単価 × 個数 × (100+消費税率)/100 
というのが直感的に思い浮かぶと思いますが、

これをテーブル内の数値を参照する場合は
=[@単価] * [@個数] * ( ( 100 + [@消費税率] ) / 100 )
となります。
一方、通常の関数で書くと
C2 *D2 *( 100 + E2 ) / 100 となります。

文字数こそ少ないですが、
どれがどの値を参照しているか、確認しないといけないので
直感的にとらえるのは難しいと思います。

また、ひとつ関数を作ると
簡単に列全体に反映させることができます。

列全体に関数を反映させることができました。

VBAと相性がいい

マクロを使い、かつデータベースを処理するのであれば
テーブルは必須です。
これは別途記事にします。

どういう場面でテーブルを使うべきか

ずばり

データベースを扱う処理をするときです。

  • データを追加する(ただし削除は注意)
  • データを参照して関数を直感的に作る
  • 集計を取る

などの必要性があるなら、ただの表ではなくテーブルを使うことを検討してください。

一方、どういう場面で使うべきでないかは

  • 管理が不特定多数
  • 複雑な管理が要求される

など、自分の手元が離れて、
さらに繊細な管理が必要な場合
はテーブルをは避けた方が無難です。

私はメンテナンスを他者がするようなファイルでも
何でもテーブル化していた時期があります。

きちんと管理できる人ならいいんですが、
ある日動かないという相談を受け、見てみると、
空白が異常にあるテーブルができて
値が正しく取れなくなりました。

逆に言うと、
自分の手元で管理できるなら
是非テーブルを使ってみてください。

きっと処理が楽になると思います。

ではでは。