社内の情報がいちばん溜まっている場所は、多くの会社でExcelです。共有フォルダに何千という .xlsx が並んでいる。ここをAIから引けるようにしたい、という要望は自然に出てきます。
ただしExcelは、AIにとって最も読みにくい形式のひとつです。理由は形式そのものではなく、人間向けに作られているからです。
なぜExcelは読みにくいのか
AIが読めるのは、基本的に「行と列に意味が定義された表」です。ところが実務のExcelはそうなっていません。
| よくある形 | AI側で起きること |
|---|---|
| 1〜3行目がタイトルや注記 | ヘッダー行を誤認する |
| セル結合された見出し | 列の対応が崩れる |
| 1シートに複数の表 | 別々の表が1つに混ざる |
| 色で状態を表現している | 色は情報として渡らない |
| 数式の結果だけが意味を持つ | 式か値かで解釈が変わる |
色は情報として渡らない
赤いセルが「要対応」を意味していても、テキストとして抽出した時点でその情報は消えます。人間が見れば一目で分かるものが、AIには存在しないのと同じになります。色で状態を表している表は、状態を列として持たせてください。
「消える」のではなく「取り出さないと出てこない」
正確に言うと、色も数式もファイルの中には入っています。xlsx は実体が ZIP で、中は複数のXMLに分かれています。
| ファイル | 入っているもの |
|---|---|
xl/worksheets/sheet1.xml |
セルの値と数式 |
xl/styles.xml |
塗りつぶしの色や書式 |
xl/workbook.xml |
シート構成 |
つまり色は別のファイルに、セルとは切り離して置かれています。一般的なテキスト抽出はシート側しか見ないので、結果として色が落ちます。「復元できない」のではなく「取りに行かないと出てこない」——どうしても色が意味を持つ表なら、抽出側を作り込めば拾えます。ただし工数は増えるので、列に持たせ直すほうが安上がりです。
数式セルの値は「前回計算したときのキャッシュ」
ここは色より厄介です。Microsoft の仕様解説には次のように書かれています。
The CellValue (<v/>) element stores the cached formula value based on the last time the formula was calculated. You do not have to specify the value, and if you omit it, it is the responsibility of the Open XML reader to compute the value based on the formula definition when the worksheet is opened.
(
<v>は、最後に計算したときの数式の値をキャッシュとして保持する。値の指定は必須ではなく、省略されている場合、シートを開いたときに数式から計算するのは読み取り側の責任になる)— Microsoft Learn / Working with formulas
値が入っていないこともあるということです。数式を計算しない実装で読むと、そのセルは空になります。集計行が数式で組まれた表をAIに読ませて、合計が空で返る——原因がここにあると気づきにくい種類の不具合です。
対処は単純で、取り込み前に一度Excelで開いて保存し直すか、値として貼り直した版を作ることです。
全部を直そうとすると必ず止まる
全部を直そうとすると必ず止まる
「Excelを全部整形しよう」と考えると、プロジェクトは頓挫します。数千ファイルを人手で直すのは現実的ではありません。
実務的な順序はこうです。
- 参照される頻度の高いファイルを特定する——担当者へのヒアリングで20〜30件に絞る。アクセス履歴は、ファイルサーバー側で監査を有効にしていなければ残っていません。無い前提で動くほうが早い
- その中で「表として整っているもの」を先に入れる——整形不要のものから成果を出す
- 整形が必要なものは、価値の高い順に手を入れる
- 残りは対象外のままにする
4番目が重要
すべてを対象にする必要はありません。使われていないファイルを整形しても、誰も得をしません。参照される頻度の高い20〜30件に絞ってください。
「1シート1テーブル」だけ守る
整形するとき、細かいルールを大量に作ると守られません。最優先は1つのシートに表を1つだけ置くことです。これだけで解釈のブレが大きく減ります。
守るルールは3つだけ
ヘッダーは1行目、結合セルなし、1シート1テーブル。この3つが守られていれば、多少の表記ゆれがあっても実用になります。細かいルールを大量に作ると守られません。
そもそもExcelに置くべきでないもの
整形を進めると、「これはExcelで管理すべきではなかった」というファイルが必ず出てきます。案件管理、顧客リスト、進捗管理あたりが典型です。
この場合、Excelを整形してAIに読ませるより、kintoneなどのデータベースに移したほうが、AI連携も含めて結果的に速いことがあります。ファイル単位で判断してください。
移行しない判断も正しい
移行しない判断も正しい
「AIのためにツールを乗り換える」は本末転倒になりがちです。移行はそれ自体に工数と定着リスクがあります。いまExcelで回っていて誰も困っていないなら、無理に動かさないほうが健全です。
更新され続けるファイルをどう扱うか
Excelは日々書き換わります。AIが古い内容を持ち続けると、精度は落ちます。同期の方式を決めておく必要があります。
- 定期同期(1日1回など)——実装が単純。日中の更新は反映されない
- 更新検知——変更のあったファイルだけ取り込む。実装は増えるが鮮度が保てる
- 参照時取得——常に最新。ただし応答が遅くなる
多くの場合、1日1回で十分
「今日更新したものを今すぐ引きたい」という業務が本当にあるかは、具体的な場面で確認してください。無いのに全件リアルタイムにすると、コストだけ増えます。
整理したデータが、どこに保存されどう扱われるかの一覧です
主要4サービスの学習利用・保存期間・保存先を、公式ドキュメントから確認して埋めた表です。Excel版はサービスで絞り込めます。出典と確認日つき。
どのファイルから手をつけるべきか、3分で分かります
どの業務のExcelを対象にするか、整形が要るかどうか。かんたんな設問に答えるだけで診断します。費用はかかりません。
この記事について:xlsx の内部構成(ZIP と xl/worksheets/・xl/styles.xml・xl/workbook.xml)は、当社が標準ライブラリのみで xlsx 生成ツールを実装した際の構成に基づいています(scripts/csv-to-xlsx.py)。<v> がキャッシュである点は Microsoft Learn「Working with formulas」の記載に基づいています。「20〜30件に絞る」「1日1回で十分」といった目安は設計上の判断であり、調査統計ではありません。