AIでExcel関数を作るときは、式をそのまま貼る前に、目的・列の意味・期待する結果を決め、通常値・空欄・該当なしなどの小さな例で検算します。式がエラーなく計算できても、参照先や条件が間違っていれば答えは誤ります。AIには式だけでなく、前提、参照範囲、例外、検証用データを一緒に出させ、実ファイルへ適用する前に自分で結果を確認してください。
目次
計算したいことを結果の形から書く
「売上を集計したい」だけでは、どの期間、対象行、金額列を使うか決まりません。まず、何を一行として扱うか、対象条件、返したい列、並び順、空欄や該当なしの扱いを文章にします。例えば「注文表の顧客IDと一致する行から、対象月の税込合計を返し、該当がなければ空欄」と書くと、AIが確認すべき前提が見えます。
既存の数式を直す場合は、現行式、どの行で誤るか、期待する値、変えてよい範囲を示します。表示結果だけでなく、元データの型も伝えます。日付が日付値か文字列か、金額に通貨記号が含まれるか、IDの先頭ゼロが意味を持つかで式は変わります。実データに個人情報や社外秘が含まれる場合は、組織の承認とサービス条件を確認し、必要な列だけを架空値へ置き換えてください。
Schemaと再現できる例を準備する
シート名・列名・データ型・見出し行・データ開始行を整理します。列名が曖昧なら、AIは見た目から意味を補ってしまうため、業務上の定義を添えます。表の中に小計行、注記、空行がある場合も伝えてください。例えば、A列の注文IDが一意なのか、同じ注文が複数明細に分かれるのかで、検索・集計の式が異なります。
実データを丸ごと渡す必要はありません。列構造を保った架空データを数行作り、期待結果を人が先に計算します。通常例だけでなく、空欄、ゼロ、重複、見つからない値、境界日を含めると、式の失敗が表に出やすくなります。AIの説明が入力データの意味と一致しているかも確認します。
依頼例:
「Excel 365を使用。『注文』シートは2行目からデータで、A=注文ID、B=顧客ID、C=注文日(日付値)、D=税抜金額、E=状態です。『集計』シートのA2の顧客IDと一致し、C列が2026年4月1日以上、2026年5月1日未満、E列が『確定』のD列合計を返したい。該当0件は0とする。式を提示し、各条件と参照範囲を説明して。重複注文は別明細として合算する。通常・該当なし・日付境界の小さなテスト例と期待値も示し、未確認の前提を最後に列挙してください。」
これは依頼の型で、実際の列定義や計算ルールを決めるものではありません。入力例と期待値はテスト用の架空データとして扱います。
関数とExcel環境の互換性を確認する
使える関数は、Excelの版や利用環境によって異なることがあります。Microsoftの公式資料ではXLOOKUPはMicrosoft 365やExcel 2021以降などで案内されていますが、Excel 2016・2019では利用できないと明記されています。相手が古い版を使う可能性があるなら、関数名だけを出させず、使用環境を先に確認し、必要なら互換性のある代替式も別案として作ります。社内で使うExcelの版が不明なら、数式を配布する前に確認してください。
式の候補が複数ある場合は、可読性、互換性、空欄やエラー時の挙動を比較します。新しい関数が短くても、共有先で使えなければ運用上の解決になりません。Google SheetsとExcelでは関数や区切り記号、配列動作が違う場合があるため、どの表計算環境へ入れる式か明示します。AIが機能の対応状況を断定したら、Microsoftの現行関数情報と利用環境の両方で確認します。
式の意味を引数ごとに説明させる
完成式だけでなく、対象範囲、検索条件、返却範囲、相対参照・絶対参照、エラー処理を分解して説明させます。例えば検索式なら、検索値の列と返す値の列、完全一致か部分一致か、最初の一致だけか複数結果かを確認します。条件付き集計なら、条件範囲と合計範囲の行数が揃っているか、日付の開始を含み終了を含まないのかを見ます。
数式が長くなったときは、LETなどで名前を付けて分割する案が読める場合もありますが、相手のExcelで使えることを確認してから採用します。AIの説明が曖昧な引数は、そのまま貼らず、式を短い部品に分けて試します。説明と実際の式が食い違うときは、説明を信用するのではなく、式の各参照を確認してください。
検索式は完全一致と該当なしを別に確認する
次は架空の商品マスタです。H1:I3へ置く想定で、F2を検索値とします。実際のExcelでは未実行なので、利用する版の小さなコピーで確かめてください。
表は横にスクロールできます
| H列:商品ID | I列:単価 |
|---|---|
| P01 | 100 |
| P02 | 200 |
=XLOOKUP(F2,$H$2:$H$3,$I$2:$I$3,"未登録",0)
=VLOOKUP(F2,$H$2:$I$3,2,FALSE)
XLOOKUPの例は完全一致を0で明示し、該当なしを「未登録」にします。VLOOKUPは第4引数のFALSEが完全一致です。VLOOKUPの第4引数を省略すると近似一致になるため、商品IDの照合では省略しない条件をAIへの依頼にも書きます。XLOOKUPは既定で完全一致ですが、同じ省略規則だと思って両関数を置き換えないでください。Microsoft:XLOOKUP(新しいタブで開く)、VLOOKUP(新しいタブで開く)
表は横にスクロールできます
| F2の入力 | XLOOKUP例の期待値 | VLOOKUP例の期待値 |
|---|---|---|
| P02 | 200 | 200 |
| P99 | 未登録 | #N/A |
検索が返した一行と「そのIDが一意」は別の確認です。P02を二行に増やしたケースも別途試し、重複があればマスタのどちらを採用するか決まるまで結果を確定しません。「未登録」は0円という意味でもありません。該当なし、空欄、実際の0を分けて表示します。
条件集計は対象行を列挙してから式と照合する
以下は「注文」シートA1:E6に置く架空例です。C列は文字列ではなく日付値、D列は数値とし、顧客C01・2026年4月・確定だけを集計します。
表は横にスクロールできます
| 注文ID | 顧客ID | 注文日 | 税抜金額 | 状態 |
|---|---|---|---|---|
| O01 | C01 | 2026-04-01 | 1000 | 確定 |
| O02 | C01 | 2026-04-30 | 500 | 確定 |
| O03 | C01 | 2026-05-01 | 700 | 確定 |
| O04 | C02 | 2026-04-15 | 900 | 確定 |
| O05 | C01 | 2026-04-20 | 300 | 取消 |
=SUMIFS(注文!$D$2:$D$6,注文!$B$2:$B$6,"C01",注文!$C$2:$C$6,">="&DATE(2026,4,1),注文!$C$2:$C$6,"<"&DATE(2026,5,1),注文!$E$2:$E$6,"確定")
=COUNTIFS(注文!$B$2:$B$6,"C01",注文!$C$2:$C$6,">="&DATE(2026,4,1),注文!$C$2:$C$6,"<"&DATE(2026,5,1),注文!$E$2:$E$6,"確定")
対象はO01とO02で、合計の期待値は1500、件数は2です。O03は翌月初日、O04は別顧客、O05は取消なので除きます。月末を文字列で指定せず、月初以上・翌月初未満を条件にすることで、対象期間を説明できます。実際に時刻を含む列なら、その保存値も含めて境界ケースを追加してください。
SUMIFSは最初が合計範囲、COUNTIFSは条件範囲と条件の組で指定します。SUMIFSの合計範囲と条件範囲の行列数をそろえることも公式の確認点です。Microsoft:SUMIFS(新しいタブで開く)、COUNTIFS(新しいタブで開く)
AIには「式を出す前に対象注文IDと除外理由を示して」と依頼します。1500が出ても対象行が違えば不合格です。行追加、取消から確定への変更、同じ顧客の翌月初日を別々に変え、期待した差だけが出るかを検証します。この式は構文と架空データの算術を照合した説明例で、実ブックへ適用して成功した報告ではありません。
期待値を決めたテスト表で検証する
本番範囲へ入れる前に、別シートや複製ファイルで小さく試します。各ケースは「入力」「期待値」「実際の結果」「合否」を記録します。少なくとも、通常の一致、該当なし、空欄、重複、境界値を試します。日付条件なら月の初日・末日・翌月初日、lookupなら一致が複数ある時にどの行を返すかを確認します。
表は横にスクロールできます
| ケース | 例 | 確かめる点 |
|---|---|---|
| 通常 | 条件一致の行が1件 | 期待した列・値を返す |
| 該当なし | 条件一致0件 | 0・空欄・エラーのどれか仕様どおり |
| 重複 | 検索値に一致する行が複数 | 最初のみか全件集計かを確認 |
| 境界 | 期間開始・終了の日時 | 含める範囲と除外条件を確認 |
| 空欄 | 条件セルまたは値セルが空 | 意図しない0や誤一致にならない |
期待値は式とは別に計算します。AIに「この式は正しいか」と聞くだけでは、同じ誤った前提を再確認することになります。計算結果が違ったら、対象行、参照範囲、列の意味、データ型、条件の境界の順に切り分け、直したあと同じケースを再実行します。
コピー前に参照と計算範囲を点検する
式を下や横へコピーするとき、参照が意図どおり動くか確認します。A2はコピー位置に応じて変わり、$A$2は列と行を固定し、A$2や$A2は片方だけ固定します。コピー先の最初・中央・最後のセルで式を見て、参照範囲がずれていないか確認してください。
数式がテーブル参照、名前定義、別シート、外部ブックを使う場合は、参照先が壊れていないことと、共有先にもアクセスできることを確かめます。計算方法が手動になっていないか、数式が文字列として保存されていないか、エラー表示が既存データに隠れていないかも確認します。大きな範囲へ一括適用する前に、影響する行数と既存数式の範囲を記録します。
失敗の形から原因を切り分ける
#N/Aなら検索値・余分な空白・データ型・一致方法、#VALUE!なら演算対象や文字列混入、#REF!なら削除・移動された参照を調べます。エラーをIFERRORで空欄に隠すと、未解決の問題まで正常に見えることがあります。エラー処理を加える前に、何を利用者へ表示し、何を調査記録へ残すか決めてください。
結果が「一見それらしい」場合も、総計との照合、別方式での計算、既知の小さなサンプルとの比較を行います。重複を二重計上していないか、空欄をゼロと同じに扱っていないか、文字列の日付を正しく比較しているかを確認します。対象が0件になったときに式が0を返しても、条件が間違って全行を除外した可能性があります。
AIに依頼するときの安全な進め方
最初の依頼では、式の候補とテストケースだけを作らせます。次に自分が列定義と期待値を照合し、必要な修正を追加で頼みます。表計算ファイルを直接編集できるAI機能を使う場合も、元ファイルを複製し、変更されたセル、数式、参照範囲を確認してから採用します。共有・アップロードが許可されているかは、利用するサービスと組織の契約・設定で確認します。
本番ファイルに適用する場合は、変更前の版を保管し、変更セル・変更者・確認日・テスト結果を記録します。計算結果を業務判断や支払いに使うなら、所有者または業務責任者が最終値を確認します。AIが提示した関数名や式の説明を、レビュー記録の代わりにはしません。
適用結果を記録して共有する
式を本番シートへ入れたら、対象範囲、更新日、テストケース、確認者、未解決の例外を記録します。共有先へ式を渡す場合は、必要なExcel版、参照シート、データ更新手順も伝えます。結果だけを値貼り付けする場合は、再計算が必要な式なのか、確定値として渡すのかを分け、利用者が次に何を確認するか明確にします。
AIものさしの判断
AIでExcel関数を作るときに大切なのは、式の生成より、計算要件と期待結果を先に固定することです。小さなテストで誤りを見つけやすい式なら、AIへ式とテスト表を一緒に作らせ、人が確認してから本番へ移せます。互換性が不明、列定義が曖昧、重複や欠損の業務上の扱いが決まっていない場合は、式を確定せず、その条件を持ち主に確認してください。
数式の変更範囲と既存処理を守る
既に他の列や帳票が数式の結果を参照している場合は、一つの式を直すだけでも下流の集計や報告へ影響します。変更前に、数式を使うセル範囲、参照しているシート、ピボットやグラフ、外部連携を把握します。配列数式やspillする式では、出力先に値が残っていないかも確認してください。数式を一括置換する場合は、対象セル数とサンプル範囲を記録し、想定外の範囲へ広がったら取り消せる複製上で作業します。
配布先が複数のExcel版を使うなら、作成者の環境だけでテストを終えません。最低限、利用者の最も古い対応版で式が認識されるか、共有ファイルを開いた時にエラーへ変わらないか確認します。対応版が特定できないなら、新関数を当然に使えると仮定せず、利用者へ確認するか、互換性を優先した別式を提示します。テスト記録にはExcel版、式、入力例、期待値、実際値を残します。
数式を更新した後は、表示形式も確認します。数値が日付や文字列に見えていないか、桁区切りや小数点の丸めで誤読を生まないかを見ます。計算結果と表示値は別に確認し、丸めた値を再計算に使っていないかも確かめてください。
引用・データ出典
公式情報を編集部が見た内容です。Hands-on未実施の記述は本文かここに分けています。
確認日:2026年10月8日
Microsoft Support:Excelの数式に関数を使用する(新しいタブで開く)
Microsoft Support:Excel関数一覧(新しいタブで開く)
OpenAI Help:ChatGPT for Excel and Google Sheets(新しいタブで開く)
Microsoft Support:XLOOKUP function(対応バージョン)
https://support.microsoft.com/en-gb/excel/functions/xlookup-function(新しいタブで開く)
