他人が作成したスプレッドシートを分析する方法(リバースエンジニアリングせずに)

引き継いだワークブックの数値を信用する前に、確認すべきことが3つあります。1つ目は、どのシートが真の情報源(ソース)であるか。2つ目は、どのセルが数式ではなく直接入力された値(ハードコード)を保持しているか。3つ目は、そのファイルが外部のどこを参照しているかです。それ以外はすべて些細なディテールにすぎません。
多くの人は、いきなりサマリータブを開いて読み始めます。その結果、11ヶ月前の手入力による上書き(ハードコード)が、そのまま取締役会の報告資料に紛れ込んでしまうことになるのです。
本ガイドでは、引き継いだワークブックの解読がなぜ難しいのか、それを解読するために人々が試みる3つの方法、そしてそれぞれのアプローチがどこで行き詰まるのかを解説します。
他人が作成したスプレッドシートが読みにくい理由
ワークブックには、単なるデータだけでなく「意思決定」が記録されています。しかし、その意思決定は目に見えず、それを下した本人はすでにチームを去っているのが普通です。
最も厄介な問題は、48,200と表示されているセルを見ただけでは、その数値がどこから来たのか全く分からない点です。数式なのか、貼り付けられた値なのか、あるいは締め切り間際に誰かが数式の上から手入力した値なのか。これら3つはすべて同じように見えます。
構造も隠されてしまいます。シートが非表示になっていたり、行がグループ化されて折りたたまれていたり、名前付き範囲が名前から想像されるのとは全く異なる場所を指していたりすることがあります。手元にないファイルへの外部リンクは、何のエラーも出さずに最後にキャッシュされた結果を表示し続けます。
さらに、バージョンの問題もあります。フォルダの中に model_v3、model_final、model_final_USE_THIS といったファイルが並んでいる場合、ファイル名は何の証拠にもなりません。
これによって生じるコスト
質問に答えるまでに丸1日かかる。 最初の質問は、通常「なぜ合計値が変わったのか」といったシンプルなものです。しかし、それに誠実に答えるためには、まずワークブック全体のマップを作成する必要があります。まだ探していない手入力による上書き(オーバーライド)が存在する可能性を排除できないからです。
根拠のない自信。 マップ作成を怠るということは、サマリータブをそのまま信用するということです。それでは回答は早く出せても、誰かから突っ込まれたときに自分の数値を守る術がありません。
後から発覚する破損。 マップを作成していないワークブックを編集すると、気づかないうちに依存関係を壊してしまうことがあります。数値の計算自体は行われるため、レビュー担当者が「数値が連動しなくなっている」ことに気づくまで、何の問題もないように見えてしまいます。
この代償を最も重く支払うのは、最後にそのファイルを手にした人です。他人が作ったスプレッドシートが3人の手を渡る間に、全員がドキュメントを残さずにその場しのぎの修正(パッチ)を重ねていくからです。
人々が試みる回避策
選択肢1:手入力された数値と計算された数値を分ける
ロジックを読み解く前に、どのセルが入力値であるかを特定します。ISFORMULA 関数は数式が含まれるセルに対して TRUE を返すため、シート全体に作業列を追加すれば、ハードコードされた値がすぐに浮き彫りになります。
単にフラグを立てるだけでなく、ロジックそのものを確認したい場合は、FORMULATEXT 関数を使用すると数式をテキストとして返してくれます。値の隣に並べて表示することで、中身の見えないブロックが読みやすいものに変わります。
これは最も価値のある第一歩であり、実際に非常に迅速に行えます。しかし、その限界はカバー範囲にあります。シートごとに適用する必要があるため、巨大なワークブックでは、シートの数が根気を上回ってしまいます。
選択肢2:依存関係をトレースする
Excel の「ワークシート分析」ツールを使えば、関係性を視覚化できます。Microsoft のドキュメントには数式とセルの間の関係を表示する方法が記載されており、「参照元のトレース」でそのセルにデータを供給している元を、「参照先のトレース」でそのセルがどこにデータを供給しているかを確認できます。
矢印の色にも情報が含まれています。青い矢印はエラーのないセルを示し、赤い矢印はエラーの原因となっているセルを指します。ワークシートのアイコンを指す黒い矢印は、参照先が別のシートまたは別のワークブックにあることを意味します。この黒い矢印こそが、外部への依存関係を発見する手がかりになります。
複雑に入り組んだ単一の数式については、数式の検証を1ステップずつ実行することで、それぞれの途中経過を確認できます。時間はかかりますが、確実な方法です。
その限界は単純な計算量にあります。トレースはセルごとの作業であり、400個の数式があるモデルでは400回の作業が必要になります。
選択肢3:ワークブック全体のインベントリ(棚卸し)を実行する
セルを1つずつ読むのではなく、ファイル全体のカタログを作成します。非表示のシートを含むすべてのシート、すべての外部リンク、すべての名前付き範囲、および列の途中で数式のパターンが途切れているすべての箇所をリストアップします。
Microsoft はまさにこのためのアドインとして、ワークブックの構造と関係性を分析する Spreadsheet Inquire を提供しています。利用できるかどうかは Office のエディションによるため、これを前提にする前にページを確認してください。循環参照は別途確認する必要があり、Microsoft は循環参照の検出と対応について個別に解説しています。
インベントリの作成は最も網羅的な選択肢ですが、最も手間がかかります。また、本来尋ねられた質問とは異なる問いに答えることにもなりかねません。
共通する限界。 これら3つの方法はすべて、ワークブックが「どのように計算しているか」を説明するにすぎません。数値が「正しいかどうか」は教えてくれませんし、バージョン4が届いた時点で、それまでの作業はすべて水の泡になります。
Powerdrill Bloom で引き継いだワークブックを分析する方法
ステップ1:ワークブックをアップロードする
ファイルを整理することなく、届いた状態のままアップロードします。Powerdrill Bloom はアップロードされたすべてのシートのプロファイルを即座に作成します。数式を1つも読む前に、シート数、列のデータ型、空白ブロック、不整合な値の型などが可視化されます。
ステップ2:自然言語で構造に関する質問をする
数値ではなく、まずはマップから始めましょう。どのシートが生の入力データのように見え、どのシートが派生したサマリーのように見えるか、また、同じフィールドがシート間で異なる値で表示されている箇所はどこかを質問します。
次に、信頼性に関する質問を直接投げかけます。どの列が途中で独自のパターンを崩しているか、また、どの合計値がその下の行と一致していないかを尋ねます。これら2つの回答によって、手入力による上書き(オーバーライド)のほとんどを特定できます。
ステップ3:チャート、レポート、またはスライド資料をエクスポートする
ワークブックの構造サマリーや、信頼できると判断したシートのチャートを書き出します。検証した内容を記録した短いメモを作成するのも有効です。
これがセルごとに数式を読むよりも優れている理由
| 手作業による方法 | Powerdrill Bloom | |
|---|---|---|
| ハードコードされた値の検出 | シートごとの作業列 | どの値がパターンを崩しているか質問する |
| 関係性の把握 | セルごとのトレース矢印 | どのシートがどのシートにデータを供給しているか質問する |
| 合計値が正しいかの検証 | 手作業で再構築する | その行と一致しているか質問する |
| バージョン4が届いたとき | すべてを最初から繰り返す | 新しいファイルをアップロードする |
最後の行こそが、行動を大きく変えるポイントです。ワークブックのマップ作成を一度だけ行うなら、午後の作業として妥当な範囲でしょう。しかし、同僚から修正版が送られてくるたびにそれを繰り返すとなると、誰もが検証をやめてしまいます。
よくある間違い
サマリータブを信用する。 サマリータブはワークブックの中で最も編集されやすく、手作業による修正(パッチ)が含まれている可能性が最も高いシートです。数値を引用する前に、必ず詳細データと照らし合わせて検証してください。
マップを作成する前に編集する。 理解していない構造の中でセルを変更すると、気づかないうちに依存関係を壊してしまう可能性があります。まずマップを作成し、それから編集しましょう。
列の整合性を決めつける。 200行目まできれいに適用されている数式でも、201行目で手入力に上書きされていることがあります。列の先頭だけでなく、列全体でパターンを確認してください。
非表示シートを無視する。 非表示のシートには、全体が依存しているルックアップテーブルが置かれていることがよくあります。ファイルがシンプルだと結論づける前に、すべてのシートを表示させてください。
ファイル名をバージョンとして扱う。 「final(最終)」というファイル名は証拠になりません。ファイルを選択する前に、候補となるファイル間で実際の数値を比較してください。この比較方法については、複数の Excel ファイルを一度に分析する方法のガイドで解説しています。
ゼロから再構築する。 そうしたくなる気持ちは分かりますが、通常は間違いです。再構築すると、オリジナルのファイルに組み込まれていたドキュメント化されていないルールが失われてしまいます。そして、そのルールこそが、数値の整合性を保つ唯一の根拠である場合が多いのです。
理解する前にクレンジング(整理)する。 結合されたセルや空白行を削除するとファイルは見やすくなりますが、それがどのように構築されたかという証拠を破壊してしまいます。まずは必ずコピーを取っておきましょう。
結論
引き継いだワークブックは、分析の問題である前に「解読」の問題です。真のソースシートを見つけ、手入力された値と計算された値を分け、外部への参照をたどり、その上で初めて尋ねられた質問に答えましょう。
これは、作成した人を疑うということではありません。他人が作ったスプレッドシートは、締め切りに追われる中で下された意思決定の記録であり、それを注意深く読み解くことは、そのシートを利用するための必要経費なのです。
コストを跳ね上げる原因は、改訂のたびにこの作業を繰り返すことです。もしそれで1週間が潰れてしまっているなら、受け取ったままのファイルで Powerdrill Bloom をお試しください。また、AI を使って Excel を分析する方法や、データのクレンジングと重複排除に関するガイド、さらに Excel AI アシスタント や AI データクレンジング のページもあわせてご覧ください。
よくある質問
他人が作成したスプレッドシートで、ハードコードされた値を見つけるにはどうすればよいですか?
ISFORMULA を使用して作業列を追加します。この関数は、数式セルに対しては TRUE を、手入力されたセルに対しては FALSE を返します。計算ブロック内にあるすべての FALSE は、手動で上書きされた可能性があり、調査する価値があります。
セルの背景にある数式をテキストとして表示するにはどうすればよいですか?
隣接するセルで FORMULATEXT を使用します。数式が読み取り可能な文字列として返されるため、各セルを1つずつクリックすることなく、列全体のロジックをスキャンできます。
セルが何に依存しているかを調べるにはどうすればよいですか?
「数式」タブの「参照元のトレース」を使用してそのセルにデータを供給している元を確認し、「参照先のトレース」を使用してそのセルがどこにデータを供給しているかを確認します。ワークシートのアイコンを指す黒い矢印は、参照先が現在のシートの外にあることを意味します。
引き継いだワークブックを分析する前に、クレンジング(整理)すべきですか?
マップを作成する前に行うべきではありません。クレンジングを行うと、構造を示す結合されたセルや空白ブロックなど、ファイルがどのように構築されたかを示す証拠が失われてしまいます。いずれにせよ、手をつけていないコピーを保管しておきましょう。
合計値が信頼できるかどうかを検証する最も早い方法は何ですか?
その下にある行から合計を再構築して比較します。両者が一致しない場合、その合計値には手動での上書き、フィルターされた範囲、またはまだ確認していないシートへの参照が含まれています。