和風スパゲティのレシピ

日本語でコーディングするExcelVBA

セル結合&Excel方眼紙は悪なのか

このブログの記事数が400となりました。

いつもお読みいただいている皆様ありがとうございます!


さて100記事に1つくらいは雑談を、ということで、
今日は表題の通り「セル結合とExcel方眼紙」について語りたいと思います。


お忙しい方向けに先に結論だけ置いておきますと、

  • どちらも正しく使えば超便利!というより代替品がない
  • データはデータ、帳票は帳票でしっかりシートを分けることが重要
  • ガイドラインと禁忌事項をしっかり守って活用しましょう

私はこんな思想です。


これをズラズラ語っていきますので、お暇な方はお付き合いください。

業務システム開発アプリとしてのExcel

「罫線付き帳票」何で作るか問題

早速ですが、本ブログの練習問題で題材として取り上げた、
こちらの請求書をご覧ください。
請求書

よくあるフォーマットですよね。


さて「この帳票を何で作るか」を考えてみましょう。


例えばこの業務がこの会社の中核をなす事業である場合は、
SaaSを導入したり、専用の業務システムを作ることも考えられます。


しかし今回の業務は、

  • この業務は急な需要発生(顧客要望)に対応する形で発生
  • 今後定型化するかはわからない
  • 売上規模も予想できないため予算は取れない

こんな業務だと仮定してください。
一般的な事業会社であれば、そこそこよくある案件じゃないかと思います。

この条件において、この帳票を何で作るか考えてみましょう。



もう何が言いたいかなんとなくわかると思うんですが、
これ、そもそもExcel以外の選択肢がほとんどないんですよね。


この帳票はお客様からの「PDFでくれ&データでくれ」両方に対応が必要そうで、
加えて社内でも「上司に/経理に/現場に見せる」が必要になります。

そうなると、

  • PDF変換機能を有し
  • 計算機能を持った表を作成でき
  • 自由な罫線の描画が必要で
  • 社内外で広く普及しており
  • なるべくコストのかからない

アプリが必要なわけです。


これExcel以外にあります?


そしてExcelで作るとなれば、
当然ながらセル結合やExcel方眼紙は必要になってくるわけですよ。


悪とか善とかぶっちゃけどっちでもよくて、
どっちにしろ使わざるを得なくない?
というのが私の率直な感想です。

セル結合やExcel方眼紙はなぜ悪なのか

セル結合やExcel方眼紙を悪と糾弾する方の主張を見ると、
「表計算ソフト本来の使い方ではない」
という意見をよく見かけます。

確かにそれはその通りかもしれません。


が、その本来の使い方ってそんなに大事なんですかね?

それ業績になんか関係あります?


Excelなんて所詮道具、ビジネスの手段でしかないわけですから、
生産性が上がったり納品物が出来たりさえすればなんでもいいと思うんですよ。


「Excelはどう使うのが正しいのか」という観点だと話が難しくなりますが、
「この帳票を何で作るか」という観点なら話は簡単なんじゃないかと。


また、それ以外によく聞くセル結合やExcel方眼紙の反対意見としては、
「印刷の調整や編集が面倒」というのもよく聞きます。


わかります。めっちゃわかります。


印刷したら変な位置で改行されてたり文字が見切れててやり直し
なんて全Excelユーザーが漏れなく経験しているでしょうし、

結合セルの多いExcelシートでなにかコピペしようとしたときに出る。

この操作は結合したセルには行えません。

このメッセージにイラっと来たことがない人なんていないと思います。



が、じゃあExcelよりもっといいものがあるんですかという話なんですよ。

正直ないですよね。


そりゃ有償ソフトでもっといいものがある可能性はあるにはありますが、
導入コスト&普及率のそり建つ壁を乗り越えられませんし。


ということでもう開き直って「Excelは表計算ソフト」などとは思わずに、
Excelは「表計算+帳票デザインソフト」だと思ってしまいましょう。

そしたらもう、
結合しまくって罫線を縦横無尽に引くのもひとつの正しい使い方になりますから。


この視点で見ると、Excelほど優れた業務システム製作アプリはこの世にありません。

ガンガン方眼紙にしてガンガンセル結合し、
簡単な業務システムを量産していけばいいんじゃないかと思います。

データと帳票をきっちり分ける

さて先ほどの練習問題について、システムの全体像を見てみましょう。

出力元データ
出力帳票


問題にするためにわざと微妙な設計にした部分こそありますが、
これはなかなか整理されたデータ&帳票です。


Excelを「表計算+帳票デザインソフト」として活用していく上では、
この「データシートと帳票シートをきっちり分ける」ことが最も重要になります。


データシートはなるべくデータベースの原則である、

  • テーブル形式の表
  • 1つの行にひとつのデータ(レコード)
  • 1つの列(セル)に1つの情報

これらのルールをしっかり守りましょう。

方眼紙にするなんてもってのほか、データ内はセル結合も当然禁止です。


逆に帳票シートではデータベースのお作法にうるさすぎてもいけません。

よく批判されるのを見かける

セル結合で分類したデータ

このセル結合も、帳票シート内の表としては素晴らしいものと私は思っています。


この形式は「データのまとまり」や「違うデータに切り替わるタイミング」の視認性が抜群ですからね。


元データをこの表に変形する作業だって、今の時代は

このデータの同じ値が続く部分をひとつのセルに結合するマクロを作ってください

とAIに頼めばすぐ終わる話ですし、印刷する票はみんなこれにしてほしいくらいです。

ワークシートの「業務システム上の役割」を明確にする

この「データシートと帳票シートをきっちり分ける」ことの重要性は、
「データ」と「帳票」だけに限った話ではありません。


一般的な業務システムは大抵こんな全体像↓になっており、

業務システムの全体像

データベースを中心とする業務システムの構成要素には、

  • 読み取るCSVなどの「原始(生)データ」
  • ユーザーの入力を受け取る「入力フォーム」
  • カレンダーやカード形式表示などの「ビュー」
  • 印刷やPDF化して出力する「帳票(レポート)」
  • データを集計して分析する「集計表」

あたりが挙げられます。


そしてこの「すべての構成要素をワークシートでこなせてしまう」というのが、
Excelの最強たる所以であり、そして厄災を招く要因でもあります。


カレンダーを直接集計していて肝心のデータベースさんが不在だったり、
データを直接加工して印刷物として使用していたり、

そういう神Excelの厄災はいたるところで起きてますからね。


しかしその祟りが起きぬよう、各シートの業務システム上の役割を明確にして、

  • ビューや入力フォームを直接集計せず中心に必ずデータシートを据えること
  • 中心となるデータはデータベースのお作法を守ること

を徹底することさえできれば、これほど便利なアプリは他にありません。

なんてったって
「業務システムのすべての役割を同じオブジェクトでこなせる」
わけですからね。


そして上記構成要素のうち、データベース以外の役割を持つシートにおいては、
セル結合やExcel方眼紙は文句なく強力なツールです。

システムの利便性を高めるために、適切に使っていくべき代物でしょう。

Excel方眼紙ガイドライン

さて、ここまで「セル結合やExcel方眼紙は適切に使え」と述べてきました。

じゃあその「正しい使い方」とは何ぞやというのを考察していきましょう。

縦は行高で、横は結合で

まずは大事なのがシートの行高と列幅の設定、
言い換えると「どこを方眼紙として使い、どこを結合するか」です。


例えば
目的の表
こんな表をExcel帳票上に構成したいとします。


このとき、縦方向(行方向)を

縦方向に結合する

こんな風に2行ずつ結合セルで調整してしまうのは、

  • 結合の機能「横方向に結合」が使用できず作るのが大変
  • VBAのFor文を組むのが大変
  • スピル数式の活用が大変

と、デメリットだらけなのでやめましょう。


縦方向は原則「行高」で調整し、1行1セルは守るのがお作法です。


極細の行も使えば綺麗なレイアウトの帳票が作れますし、
左右で高さの違う欄はあまり登場しないため、デメリットにもなりづらいです。

行高による調整


対して横方向(列方向)ですが、こちらは行とは逆に、
列幅はいじらず等間隔にしておきセル結合で対応すると良いです。


というのも、列幅を変えてレイアウトを作っていると、

上部に新しい欄を追加

後日この欄を追加する必要が出たとき詰むからです。


特にA4縦の帳票は上下に別レイアウトの表が配置される確率が高いですからね。


結果図形を挿入したり、あろうことか1セルに2つの情報をいれたり。。。

セル結合を鼻で笑える禁忌事項を犯す羽目になっては本末転倒なので、
列方向は等間隔を維持して、セル結合で対応しておくのが安全です。

印刷範囲外を積極的に活用する

Excel帳票の優れた点として、
印刷範囲外で好きなことができることが挙げられます。


簡易マニュアルやQ&Aなどを書いておくのも便利ですし、
数式を使った作業列を作れるというのもExcelならではの長所です。


特に今のExcelはスピル機能を活用できますので、

こんな風に通常は禁忌の「1文字1セル」をスピルで表現したり、

セル結合でスピルできない欄を一旦範囲外のスピルさせて持ってきたり、
範囲外からのスピル

使えるテクニックがどんどん増えています。


テーブルを使って簡単なマスタも置くことができますので、
印刷範囲外も積極的に使っていきましょう。

禁忌事項

最後に「これだけはやってはいけない」禁忌事項集を紹介して本記事を終わります。

これをやったら文句なく「悪」ですから、絶対にやらないようにしてください。

1セルに複数の情報

先ほど軽く触れましたが、1つのセルに複数の情報を入れるのはやめましょう。

当然ですが、シート関数でもVBAでもデータの取得が大変になります。


最近見た中で一番ひどかったのがこれ

1セルに大量の情報

お察しの通り区切り線はオートシェイプです(^ω^#)


スペース連打という禁忌も犯すことで、Split系列も封じる隙のなさ。
Trim関数の活用事例でも作りたかったんでしょうか。


この1セル複数情報の禁忌は、
「列幅はなるべく等間隔で」のルールを破って作られた帳票において、
後日追加された欄で詰むことでよく登場している気がします。


こうならないように注意してください。

1セル一文字の入力欄

これがダメなのは特に説明はいらないと思います。

JOIN関数の登場でデータとして抽出するのは多少楽になりましたが、
普通に入力が面倒すぎます。


ただし、紙での運用も兼ねている帳票の場合は必要なこともあるため、
先ほど紹介した欄外を活用したスピル式は緊急回避策として覚えておきましょう。

MIDとSEQUENCEで簡単に作れます。


ガチ方眼紙(1セル1mm)

これも特に説明はいらない気がします。

そこまでするメリットはホントにないのでやめましょう。


官公庁はこの帳票作りすぎなんだよいい加減にしろ


ここまでくるとシート数式・VBA共に組みづらいだけです。

さらには結合セルの大きさが一致している保証がないため、
スピル式やStepを利用したFor文も死んでしまいますからね。

選択範囲に中央

正直物申したいんですが、ぶっちゃけこれって

  • 理由を考えず「セル結合は悪」と思ってる人が、
  • 理由を考えず代替案に飛びついた

産物な気がするんですがどうなんですかね?


セル結合のデメリットはほとんど解消されておらず、
新たなデメリットを増やしているだけにしか。


そもそもセル結合のデメリットが顕著になるのは「縦方向の結合」なんですよ。
フィルター・ソートが死んだり、スピルやFor文が死んだりしますから。

対して横方向の結合は、割と許せることが多いです。


じゃあ縦方向に実行できない「選択範囲に中央」で何を代替するつもりなの?

教えて偉い人。

集計表や入力フォーマットにWord

セル結合やExcel方眼紙に反対する人に「じゃあ何で作ればいいの?」と聞くと、
「文書なんだからWordで作れ」
という過激派もたまに見受けられます。


しかしこれこそ禁忌事項だと思うんですよね。


文章メインの、例えば契約書などは当然Wordで作って然るべきですが、
集計表が入った文書や入力フォーマットなどをWordで作ると、

  • 集計表の元データがどれかわからない
  • データの更新が面倒
  • レイアウト変更(罫線の引き直し)がExcelより大変

という問題に悩まされます。


そしてさらに問題になるのが「大量のファイルを取り込んでデータ化する」際です。


これがExcel帳票であれば
「フォルダ内のすべてのファイルのC3セルを取得してくる」
なんて楽勝で、なんならAIで事足りるため自分でコードを書く必要すらありません。


対してWordファイルになると、
「○行目から○行目」や「罫線に囲われた部分」ですら取得難易度が高く、
WordVBAの情報が少ないこと、故にAIの精度も低いことが相まって困難を極めます。


表や罫線が埋め込まれた文書は、おとなしくExcelを使っておきましょう。





以上で「セル結合&Excel方眼紙は悪なのか」の考察を終わります。


何度も書きましたが、使い方さえ間違わなければ
Excelほど優れた業務システム開発アプリは他にありません。


その「正しい使い方」とは、

  • 各シートの業務システム上の役割を明確にすること
  • その中心にデータシートを添えること

であり、

そしてこのデータ以外のシートをレイアウトする上では、
セル結合やExcel方眼紙は文句なく強力なツールです。

正しく使いこなして、快適なExcelライフを過ごしていきましょう。