「昨日まで完璧に動いていた売上集計の数式が、今朝開いたら全部消えている……」。チームで共有しているGoogleスプレッドシートを開いた瞬間、心臓がキュッと縮むあの感覚、あなたも経験したことがあるのではないでしょうか。しかも犯人は誰なのかわからない。聞いて回るのも気まずいし、数式をイチから作り直す時間もない。Ctrl+Zを連打してみても、一度ファイルを閉じてしまった後では手遅れです。
じつはこのトラブル、Googleスプレッドシートの共同編集では非常によくある「あるある」なんです。2026年3月時点でもGoogleのコミュニティフォーラムには同様の相談が絶えず、20名規模の同時編集で「同じセルを触っていないのにデータが消えた」という報告すらあります。でも安心してください。正しい知識と設定さえ押さえておけば、数式の消失はほぼ100%防げますし、万が一消えてしまっても数クリックで完全復元できます。
この記事では、Googleスプレッドシートの共同編集で数式が消えてしまう原因を徹底的に分析し、復元方法から二度と消させない予防策、さらには2026年3月10日に発表されたばかりのGemini新機能の活用法まで、すべてを網羅してお届けします。
- 共同編集で数式が消える5つの原因と、それぞれに対応した具体的な解決策がわかります。
- 変更履歴を使った数式の完全復元手順と、セル単位で編集者を特定するテクニックを習得できます。
- 2026年最新のGemini連携やセル保護機能を活用して、数式消失を未然に防ぐ運用ルールが身につきます。
- なぜGoogleスプレッドシートの共同編集で数式が消えるのか?
- 消えた数式を3分で復元する変更履歴の使い方
- 二度と数式を消させないための鉄壁の予防策
- 2026年最新!Gemini連携で変わるスプレッドシートの守り方
- 情シス歴10年超の現場知見他のサイトでは教えてくれない数式消失の「本当の原因」
- 実務で即使える!数式保護を自動化するGASコード集
- 現場で本当に起きる「よくわからない問題」とその解決法
- GASを導入する際の注意点と落とし穴
- 数式消失を防ぐためのスプレッドシート設計のベストプラクティス
- ぶっちゃけこうした方がいい!
- Googleスプレッドシートの共同編集で数式が消えることに関する疑問解決
- 今すぐパソコンやスマホの悩みを解決したい!どうしたらいい?
- まとめ
なぜGoogleスプレッドシートの共同編集で数式が消えるのか?
まず最初に理解しておきたいのが、Googleスプレッドシートはすべての操作をリアルタイムで自動保存するという仕組みです。Excelのように「保存ボタンを押し忘れたからデータが消えた」ということは起きませんが、逆に言えば「誰かが誤って数式を消した瞬間に、その変更も自動保存されてしまう」ということです。これが共同編集における数式消失の根本的な原因になっています。
では、具体的にどんな場面で数式が消えてしまうのでしょうか。実務で特に多い原因を深掘りしていきましょう。
原因1編集者がセルに直接値を入力して数式を上書きしてしまう
これが圧倒的に多いパターンです。たとえば
=SUM(B2:B100)
と入力されたセルに、別のメンバーが「合計はこの数字のはず」と思い込んで直接「54000」と手入力してしまう。その瞬間、数式は永遠に消え去り、ただの固定値に置き換わります。ある調査では、制限なしで共有されたスプレッドシートを42名のアナリストに編集させたところ、わずか90秒以内に61%が計算エラーを発生させたという結果が報告されています。しかも全員が編集中にエラーに気づかず、後工程のチェックで初めて発覚したというのですから恐ろしい話です。
原因2行や列の挿入・削除で参照範囲がずれる
共同編集者が新しい行を挿入したり、不要な列を削除したりすると、既存の数式が参照しているセル範囲がずれてしまうことがあります。特にGoogleフォームと連携しているスプレッドシートでは、フォームからの回答が自動的に新しい行として追加されるため、数式が入っていたセルが押し出されて消えてしまうケースが頻発します。
原因3コピー&ペーストで「値のみ貼り付け」されてしまう
他のシートやアプリケーションからデータを貼り付ける際に、「値のみ貼り付け」(ショートカット
Ctrl+Shift+V
)を使うと、数式がすべて計算結果の固定値に置き換わります。これは意図的な操作の場合もありますが、貼り付け範囲を間違えて、関係ないセルの数式まで上書きしてしまうミスが後を絶ちません。
原因4オフライン編集と同期のタイミング衝突
Googleスプレッドシートにはオフライン編集機能がありますが、オフライン中の変更はインターネットに再接続した瞬間に同期されます。このとき、オンラインで別のメンバーが同じセルを編集していた場合、「最後に書き込んだほうが勝つ」というルールが適用されるため、先に入力していた数式が静かに上書きされてしまう危険があります。
原因5IMPORTRANGE関数の仕様による見落とし
複数のスプレッドシート間でデータを連携する際に使う
=IMPORTRANGE()
関数には、注意すべき仕様があります。Googleの公式ヘルプにも明記されているとおり、IMPORTRANGEで取り込んだデータには元のシートの数式は含まれません。あくまで計算結果の値だけがコピーされるため、「数式ごと持ってきたつもりが、実は値しか来ていなかった」という勘違いが起きやすいのです。
消えた数式を3分で復元する変更履歴の使い方
数式が消えてしまったことに気づいたら、まずは深呼吸してください。Googleスプレッドシートは、あなたやチームメンバーが行ったすべての編集操作を自動的に記録しています。この「変更履歴」機能は、いわばタイムマシンのようなもの。数式が壊れる前の状態にワンクリックで戻ることができます。
シート全体を過去のバージョンに復元する方法
まずは最もシンプルな復元方法です。シート全体を、数式が無事だった時点の状態に巻き戻します。
- 画面上部のメニューから「ファイル」→「変更履歴」→「変更履歴を表示」をクリックします。キーボードショートカットなら
Ctrl+Alt+Shift+H(Mac
Cmd+Option+Shift+H)が使えます。
- 画面右側に日時ごとの編集履歴一覧が表示されます。各バージョンには編集者の名前が色分けで表示されるので、誰がいつ変更を加えたのかがひと目でわかります。
- 数式が消える前の日時をクリックすると、その時点のシート内容がプレビュー表示されます。変更された箇所はハイライトされるので、どこが壊れたのかも確認できます。
- 問題のないバージョンが見つかったら、画面上部の「この版を復元」ボタンをクリックし、確認ダイアログで「復元」を選びます。
この復元操作は「上書き」ではなく「追加」の考え方です。復元後も、それ以前のすべてのバージョン履歴は残り続けるので、「復元したけどやっぱり違った」という場合でも、さらに別のバージョンに戻れます。安心して試してみてください。
特定のセルだけをピンポイントで復元するテクニック
「シート全体を巻き戻すと、今日他のメンバーが入力した最新データまで消えてしまう……」。そんなときは、もっと外科手術的なアプローチが有効です。
まず変更履歴のプレビュー画面で、復元したい数式が入っているセルを見つけてコピー(
Ctrl+C
)します。次に画面左上の「戻る」矢印をクリックして変更履歴を閉じ、現在のシートに戻ってから、対象のセルに貼り付け(
Ctrl+V
)するだけです。こうすれば、最新のデータはそのままに、消えてしまった数式だけを過去から「救出」できます。
もしコピペだけでは不安な場合は、変更履歴画面で該当バージョンの右にある「︙」(三点メニュー)→「コピーを作成」を選びましょう。過去のバージョンが別ファイルとして保存されるので、それを参照しながら必要な数式だけを現在のシートに移植できます。これぞプロの救済術です。
セルの編集履歴で「犯人」を特定する方法
数式が消えた原因を突き止めたいときは、セル単位の編集履歴が役立ちます。対象のセルを右クリックし、「編集履歴を表示」を選ぶと、そのセルに対する変更の履歴がすべて表示されます。誰が、いつ、どんな値に変更したのかが時系列でわかるため、意図しない上書きがあったかどうかをすぐに判断できます。ただし、行や列の挿入・削除、フィルター操作など一部の変更はセル履歴に記録されない場合がある点には注意してください。
二度と数式を消させないための鉄壁の予防策
復元方法を知っておくことは大切ですが、そもそも数式が消えない環境をつくることのほうがはるかに重要です。ここでは、2026年時点で使える最強の予防テクニックを紹介します。
セル保護機能で数式を「触れないセル」にする
Googleスプレッドシートには、特定のセルや範囲を編集できないようにする「シートと範囲を保護」機能が備わっています。これを使えば、数式が入っているセルを「自分以外は編集不可」にロックできます。
設定方法はとてもシンプルです。保護したいセル範囲を選択した状態で、メニューから「データ」→「シートと範囲を保護」を選びます。右側に表示されるパネルで範囲を確認し、「権限を設定」をクリック。ここで「この範囲を編集できるユーザーを制限する」を選び、編集を許可するメンバーを指定すれば完了です。
保護されたセルを誰かが編集しようとすると、「このセルは保護されています」という警告メッセージが表示され、変更がブロックされます。もう少しソフトな運用にしたい場合は、「この範囲を編集したときに警告を表示する」を選ぶこともできます。これなら完全にロックはしないものの、「本当に編集しますか?」という確認が入るため、うっかりミスを大幅に減らせます。
シート設計で「入力エリア」と「計算エリア」を分離する
そもそもの設計思想として、メンバーがデータを入力するエリアと、数式で自動計算するエリアを物理的に分けることが非常に効果的です。たとえば「入力シート」と「集計シート」をタブで分け、集計シートでは
=IMPORTRANGE()
や
=QUERY()
関数を使って入力シートのデータを参照する構成にします。集計シート全体を保護しておけば、メンバーは入力シートだけを触ることになり、数式が壊れるリスクは限りなくゼロに近づきます。
さらに上級者向けのテクニックとして、数式を含む「マスターシート」を非公開にし、閲覧用の「ビューアシート」だけを共有するという「エアギャップ方式」もあります。ビューアシートにはIMPORTRANGEで値だけを引っ張ってくるため、共有相手がどんな操作をしても、マスターシートの数式には一切影響がありません。
変更履歴に名前をつけて「安全地点」を作る
大事なバージョンが完成したら、変更履歴に名前をつけておく習慣をつけましょう。「ファイル」→「変更履歴」→「最新の版に名前を付ける」で任意の名前を入力できます。たとえば「3月度集計完了・数式確認済み」のように具体的な名前をつけておけば、万が一トラブルが起きても、名前付きバージョンを検索するだけで安全な状態にすぐ戻れます。Googleスプレッドシートでは1ファイルにつき最大15個の名前付きバージョンを保存できるので、月次の締め作業や重要な更新のタイミングで活用してください。
共有権限の設定を見直す
数式が消えるトラブルの多くは、共有権限が必要以上に緩く設定されていることに起因します。Googleスプレッドシートの共有権限には「編集者」「閲覧者(コメント可)」「閲覧者」の3段階があります。全員を「編集者」にするのではなく、実際にデータを入力する必要があるメンバーだけを編集者にし、結果を見るだけの人は閲覧者に設定するのがベストプラクティスです。
また、「リンクを知っている全員が編集可」という設定は特に危険です。URLが意図せず外部に漏れた場合、まったく無関係の人がシートを自由に編集できてしまいます。共有する際は必ず「特定のユーザー」を指定し、それぞれに適切な権限レベルを付与するようにしましょう。
2026年最新!Gemini連携で変わるスプレッドシートの守り方
2026年3月10日、GoogleはGemini AIとGoogle Sheetsの統合を大幅に強化する新機能を発表しました。この最新アップデートは、数式の消失防止と復旧に直結する画期的な内容を含んでいます。
「Fill with Gemini」で数式再構築が劇的にラクになる
新しく追加された「Fill with Gemini」機能は、スプレッドシートのセルをAIが自動補完してくれる機能です。たとえば列の見出しだけ設定しておけば、GeminiがGoogle検索やGmail、ドライブ内のファイルから情報を引っ張ってきて、セルを自動的に埋めてくれます。Googleが95名を対象に行った内部調査では、100セルのデータ入力タスクにおいて手入力と比較して大幅な時間短縮が確認されています。
この機能の本質は「データ入力の自動化」ですが、数式が消えてしまった後の復旧にも応用できます。壊れてしまった計算列の意図をGeminiに自然言語で説明するだけで、適切な数式を再生成してくれる可能性があるからです。ただし、Geminiによる操作はUndoの挙動が不安定な場合があるため、Gemini機能を使う前には必ず「ファイル」→「変更履歴」→「最新の版に名前を付ける」でバージョンを保存することを強くおすすめします。
Geminiのマルチステップ編集で保護設定も自動化
2025年後半から順次展開されてきたGeminiの拡張編集機能では、自然言語による複数操作の同時実行が可能になりました。たとえば「A列にドロップダウンを追加して、D列の数式をフリーズして、ヘッダー行を固定して」といった複合的なリクエストを一度のプロンプトで実行できます。セル保護の設定も含め、面倒な初期設定を一気に片付けられるため、新しいシートを作るたびに保護設定を忘れてしまう、というヒューマンエラーも減らせます。
2026年2月の新関数SHEETとSHEETSでタブ管理が堅牢に
2026年2月にリリースされた
=SHEET()
関数と
=SHEETS()
関数も見逃せません。
=SHEET()
は指定したシート名やセル参照のシート番号を返し、
=SHEETS()
はファイル内の全シート数を返す関数です。一見地味に思えますが、これらの関数を使えばタブの名前が変更されたり順序が入れ替わったりしても、数式の参照が壊れにくい構造を構築できます。タブ名のハードコーディングに依存していた従来の設計から脱却し、動的で壊れにくいシート構成が実現できるようになりました。
情シス歴10年超の現場知見他のサイトでは教えてくれない数式消失の「本当の原因」
ここからは、筆者が情報システム部門で10年以上にわたりGoogle Workspaceの運用管理を担当してきた経験から、他の解説記事ではまず語られない「現場のリアル」をお伝えします。正直に言うと、数式が消えるトラブルの大半は、ツールの仕様ではなく「運用ルールの不在」と「人間の思い込み」が原因です。
「誰も触ってない」は99%ウソ
数式消失の報告を受けて調査すると、ほぼ確実に「いや、私は触ってないです」と全員が言います。でもセルの編集履歴を開くと、しっかり誰かの名前が残っているんですよね。これは悪意ではなく、本人が無意識にセルをクリックしてDeleteキーやBackspaceキーを押してしまっているケースがほとんどです。特にノートパソコンのトラックパッドが敏感な機種だと、スクロール中に意図せずセルを選択してしまい、次のキー入力で中身が吹き飛ぶことがあります。
情シスとして本気で対策するなら、「触ってないはず」を信じるのではなく、そもそも触れない状態を技術的に作ることが唯一の正解です。ここで力を発揮するのがGoogle Apps Script(GAS)による自動保護の仕組みです。
「保護を手動で設定する運用」は破綻する
よくある指南記事では「数式セルを手動で保護しましょう」と書いてありますが、実務でシートが何十個もあり、毎月新しいシートが追加される環境で、毎回手作業で保護設定をするなんて現実的に無理です。筆者のチームでも初期は手動運用でやっていましたが、3ヶ月で保護の設定漏れが頻発し、結局トラブルが減りませんでした。だからこそ、GASで自動化するしかないという結論に至ったわけです。
実務で即使える!数式保護を自動化するGASコード集
ここでは、筆者が実際の業務環境で使い込んできたGoogle Apps Scriptのコードを紹介します。コピー&ペーストするだけで動くように設計していますが、自社環境に合わせて変数の値は適宜変更してください。GASの実行は、対象のスプレッドシートを開いた状態で「拡張機能」→「Apps Script」からエディタを開いて使います。
GAS①数式が入っているセルを自動検出して一括保護する
シート内の数式セルをすべて自動検出し、まとめて保護をかけるスクリプトです。新しいシートを作成したタイミングや、月次の締め作業後に実行すると効果的です。手動で「ここに数式がある」と覚えておく必要がなくなります。
function autoProtectFormulas() {
var sheet = SpreadsheetApp.getActiveSheet();
var dataRange = sheet.getDataRange();
var formulas = dataRange.getFormulas();
var me = Session.getEffectiveUser();
// 既存の範囲保護をいったん全削除(重複防止)
var existingProtections = sheet.getProtections(SpreadsheetApp.ProtectionType.RANGE);
for (var p = 0; p < existingProtections.length; p++) {
if (existingProtections.canEdit()) {
existingProtections.remove();
}
}
// 数式セルを検出して個別に保護
var count = 0;
for (var i = 0; i < formulas.length; i++) {
for (var j = 0; j < formulas.length; j++) {
if (formulas !== '') {
var cell = sheet.getRange(i + 1, j + 1);
var protection = cell.protect();
protection.setDescription('数式保護_自動設定');
protection.addEditor(me);
protection.removeEditors(protection.getEditors());
if (protection.canDomainEdit()) {
protection.setDomainEdit(false);
}
count++;
}
}
}
SpreadsheetApp.getUi().alert(count + '個の数式セルを保護しました。');
}
このスクリプトのポイントは、既存の保護を一度削除してから再設定する点です。何度実行しても保護が重複しないので、月次のルーティンに組み込みやすい設計になっています。ただし注意点として、数式セルが数百個以上ある場合は実行に時間がかかることがあります。その場合は、次に紹介する「シート全体保護+入力エリアだけ解除」方式のほうが効率的です。
GAS②シート全体を保護して入力エリアだけ穴を開ける
こちらは逆転の発想で、シート全体にロックをかけた上で、メンバーが入力すべきセル範囲だけを「編集可能な穴」として開放するスクリプトです。実務ではこちらのパターンのほうが圧倒的に使いやすいです。
function protectSheetWithHoles() {
var sheet = SpreadsheetApp.getActiveSheet();
// シート全体を保護
var protection = sheet.protect();
protection.setDescription('シート全体保護_入力エリア除外');
// 編集を許可する範囲を指定(ここを自社の入力エリアに変更)
var editableRanges = [
sheet.getRange('B2:B100'), // 売上金額の入力列
sheet.getRange('D2:D100'), // 備考欄
sheet.getRange('F2:F100') // 担当者名
];
protection.setUnprotectedRanges(editableRanges);
// オーナー以外の編集権限を削除
var me = Session.getEffectiveUser();
protection.addEditor(me);
protection.removeEditors(protection.getEditors());
if (protection.canDomainEdit()) {
protection.setDomainEdit(false);
}
SpreadsheetApp.getUi().alert('シート保護完了。入力エリアのみ編集可能です。');
}
この方式の最大のメリットは、保護対象を「数式セル」としてではなく「入力以外の全域」として定義することで、数式の追加や列の増減があっても保護が自動的にカバーしてくれる点です。10年やってきた結論として、「守りたいものを指定する」より「触っていいものだけ指定する」ほうが、漏れが圧倒的に少なくなります。
GAS③数式が消されたら即座にSlack・メールに通知を飛ばす
保護設定をしていても、オーナー権限を持つ人が誤って数式を消してしまうことは起こりえます。そこで、数式が削除されたことをリアルタイムに検知して通知するスクリプトです。注意点として、メール送信には「インストール可能なトリガー」を使う必要があります。単純なonEdit関数ではメール送信の権限がないためです。
function installedOnEdit(e) {
var range = e.range;
var sheet = range.getSheet();
var oldValue = e.oldValue;
// 変更前の値が数式だったかどうかを判定
// (oldValueは単一セル編集時のみ取得可能)
if (oldValue && oldValue.toString().charAt(0) === '=') {
var newValue = range.getValue();
var newFormula = range.getFormula();
// 新しい値が数式でない場合=数式が消された
if (newFormula === '') {
var user = Session.getActiveUser().getEmail();
var cellAddress = sheet.getName() + '!' + range.getA1Notation();
var subject = '【警告】スプレッドシートの数式が削除されました';
var body = '検知日時: ' + new Date() + '\n'
+ 'セル: ' + cellAddress + '\n'
+ '削除された数式: ' + oldValue + '\n'
+ '上書きされた値: ' + newValue + '\n'
+ '操作者: ' + user;
// メール通知(宛先を自分のアドレスに変更)
MailApp.sendEmail('your-email@example.com', subject, body);
}
}
}
このスクリプトを使うには、Apps Scriptエディタの左メニューにある時計アイコン(トリガー)から「トリガーを追加」をクリックし、関数に
installedOnEdit
、イベントの種類に「編集時」を選択して保存してください。一点重要な制約として、
e.oldValue
は単一セルの編集時にしか取得できない仕様があります。複数セルの一括ペーストによる上書きは検知できないため、前述のセル保護と組み合わせて運用するのがベストです。
GAS④毎日自動でバックアップシートを作成する
変更履歴があるとはいえ、筆者は「ベルトの上にサスペンダーもつける」主義なので、重要なスプレッドシートは毎日自動でコピーを取っています。以下のスクリプトを時間ベースのトリガー(毎日午前2時など)で実行すれば、Googleドライブ内の指定フォルダに日付入りのバックアップファイルが自動生成されます。
function dailyBackup() {
var sourceId = 'ここにスプレッドシートのIDを入力';
var folderId = 'ここにバックアップ先フォルダのIDを入力';
var source = DriveApp.getFileById(sourceId);
var folder = DriveApp.getFolderById(folderId);
var today = Utilities.formatDate(new Date(), 'Asia/Tokyo', 'yyyyMMdd');
var backupName = source.getName() + '_backup_' + today;
// 同名ファイルが既にあればスキップ
var existing = folder.getFilesByName(backupName);
if (!existing.hasNext()) {
source.makeCopy(backupName, folder);
Logger.log('バックアップ作成完了: ' + backupName);
} else {
Logger.log('本日分のバックアップは作成済みです。');
}
// 30日以上前のバックアップを自動削除(容量節約)
var files = folder.getFiles();
var thirtyDaysAgo = new Date();
thirtyDaysAgo.setDate(thirtyDaysAgo.getDate() - 30);
while (files.hasNext()) {
var file = files.next();
if (file.getDateCreated() < thirtyDaysAgo) {
file.setTrashed(true);
Logger.log('古いバックアップを削除: ' + file.getName());
}
}
}
ポイントは末尾の古いバックアップ自動削除の部分です。放っておくとGoogleドライブの容量(無料プランは15GB)がバックアップだけで埋まってしまうので、30日経過したファイルはゴミ箱に移動するようにしています。保持期間は自社のポリシーに合わせて変更してください。
現場で本当に起きる「よくわからない問題」とその解決法
ここからは、ヘルプ記事やFAQを読んでも解決法が見つからない、でも現実の職場では頻繁に遭遇する厄介なトラブルとその対処法をお伝えします。
「数式は残っているのに計算結果がおかしい」問題
数式自体は消えていないのに、合計値が明らかに間違っている。これ、意外と多いんです。原因の9割はデータ形式の不一致です。見た目は数字なのに、セルの中身がテキスト形式になっているケースですね。たとえば外部システムからCSVでエクスポートしたデータを貼り付けたとき、数値が文字列として認識されることがあります。
確認方法は簡単です。疑わしいセルをクリックして、「表示形式」→「数字」→「数値」を選んでみてください。もしそれで合計が変わったら、テキスト混在が原因です。広範囲のデータを一括で修正するなら、空のセルに
1
と入力し、そのセルをコピーしてから、問題のある範囲を選択して「形式を選択して貼り付け」→「値のみ貼り付け」→演算「掛ける」を選択します。これで見た目を変えずに全セルが数値形式に変換されます。地味ですが、情シス現場では週に1回は使うテクニックです。
「保護したはずのセルが編集できてしまう」問題
保護を設定したのに、特定のメンバーが普通に編集できてしまうという相談もよく受けます。これには主に2つの原因があります。
1つ目は、保護設定時に「警告を表示する」を選んでしまっているパターンです。この設定は編集を「禁止」するのではなく、「確認ダイアログを出すだけ」です。ユーザーが「OK」を押せば普通に編集できてしまいます。確実にブロックしたい場合は、必ず「この範囲を編集できるユーザーを制限する」を選択してください。
2つ目は、対象者がスプレッドシートのオーナーまたは保護設定の編集者として残っているパターンです。Google Workspaceの管理コンソールで組織内のユーザーに対して「ドメイン全体で編集可能」の設定がオンになっていると、個別の保護設定が効かないことがあります。管理者権限がある場合は、保護範囲の設定画面で「ドメインのユーザーによる編集を許可する」のチェックが外れているか確認してください。
「ARRAYFORMULA関数が勝手に壊れる」問題
=ARRAYFORMULA()
は一つのセルに入力するだけで列全体に数式を適用できる強力な関数ですが、共同編集環境では特に壊れやすい代表格です。なぜなら、ARRAYFORMULAが展開している範囲のセルに誰かが値を手入力すると、その行だけARRAYFORMULAの出力が上書きされるからです。しかもエラー表示が出ないため、見た目上は正常に見えるのに一部の行だけ計算されていないという非常に発見しにくいバグになります。
対策としては、ARRAYFORMULAが展開する列全体を保護するのが最も確実です。先ほど紹介した「GAS②シート全体保護+入力エリア解除」のスクリプトを使い、ARRAYFORMULA列を保護範囲に含めてしまいましょう。もう一つの手法として、ARRAYFORMULAを入力シートではなく別の集計シートに配置し、入力シートからは
=IMPORTRANGE()
や直接参照で値を取得する設計にすることで、ユーザーがARRAYFORMULA展開範囲に触れる可能性をゼロにできます。
「スマホで開いたら表示がバグって数式を誤タップした」問題
これは本当に多い相談で、かつ根本解決が難しい問題です。スマートフォンのGoogleスプレッドシートアプリは、ピンチイン・ピンチアウトで拡大縮小する際にセルを誤選択しやすく、そのまま画面のどこかをタップするとセルの内容が変更されてしまいます。特にiPhoneの場合、キーボードの予測変換が自動入力されてしまうケースすらあります。
情シスとしての現実的な対策は、スマホからのアクセス権限を「閲覧のみ」に制限することです。ただしGoogleスプレッドシートにはデバイス別に権限を分ける機能がないため、運用ルールとして「スマホからは見るだけ、編集はPCから」を徹底するか、あるいはスマホユーザーには編集権限を付与せずコメント権限のみにするという方法を取ります。どうしてもスマホから編集が必要なメンバーがいる場合は、最低限、数式セルの保護を確実にかけておくことで被害を最小限に抑えましょう。
「誰かがフィルタを解除したら関数の参照がおかしくなった」問題
SUBTOTAL関数やフィルタ表示に依存した計算をしているシートで、別のメンバーがフィルタ条件を変更したり解除したりすると、表示される集計値が変わってしまうことがあります。これ自体は仕様通りの動作なのですが、「昨日見た数字と違う!」とパニックになる人が必ず出てきます。
根本対策としては、フィルタ機能ではなく「フィルタ表示」を使うようメンバーに周知することです。通常のフィルタはシートを共有している全員の表示に影響しますが、フィルタ表示は設定した本人の画面にしか反映されません。メニューの「データ」→「フィルタ表示」→「新しいフィルタ表示を作成」から設定できます。また集計値については、フィルタの影響を受けない
=SUM()
を使うか、あえて別の集計専用シートに値を出力する設計にしておくと、「見るタイミングで数字が変わる」問題から解放されます。
GASを導入する際の注意点と落とし穴
GASは非常に便利ですが、情シス視点で押さえておくべき注意点がいくつかあります。ここを知らずに導入すると、別のトラブルを引き起こす可能性があります。
トリガーの実行回数上限に注意
Google Apps Scriptには1日あたりの実行回数やメール送信数に上限があります。無料のGoogleアカウントでは、トリガーの総実行時間が1日90分まで、メール送信は100通までといった制約が設けられています。Google Workspaceの有償プランではこれらの上限が緩和されますが、それでも無制限ではありません。先ほど紹介した「数式削除通知スクリプト」を全社の何十ものスプレッドシートに設定すると、あっという間に上限に達する可能性があります。本当に重要なシートに絞って適用することが大切です。
「保護しすぎ」は業務を止める
情シスあるあるですが、トラブルの直後は「もう二度と起こさない!」と意気込んで保護をガチガチに固めがちです。でもやりすぎると、現場から「修正が必要なのに保護を外してくれるまで1時間待たされた」というクレームが噴出します。筆者の経験則では、数式セルと見出し行だけを保護し、データ入力セルは自由に編集可能な状態にするのがバランスとして最適です。セキュリティと利便性のトレードオフは常に意識してください。
GASの権限承認でメンバーが混乱する
GASを初めて実行するとき、Googleから「このアプリは確認されていません」という警告画面が表示されます。ITに詳しくないメンバーは、この画面を見た瞬間に「ウイルスですか?」と聞いてきます。事前に「この画面が出たら『詳細』→『安全ではないページに移動』→『許可』の順でクリックしてください」と手順書を配布しておくか、管理者がGoogle Workspace管理コンソールからアプリを信頼済みとして登録しておくことをおすすめします。
数式消失を防ぐためのスプレッドシート設計のベストプラクティス
ここまでのGASコードや対策をすべて踏まえた上で、筆者が実務で推奨しているスプレッドシートの設計パターンをまとめます。新しいシートを作るときは、このパターンに沿って設計するだけで、数式消失リスクを構造的にほぼ排除できます。
| シート名 | 役割 | 権限 | 保護設定 |
|---|---|---|---|
| 入力シート | メンバーがデータを手入力する場所 | 編集者 | 見出し行のみ保護 |
| マスタシート | 商品名・担当者名などの参照データ | 管理者のみ編集 | シート全体を保護 |
| 集計シート | 数式で自動計算・集計する場所 | 管理者のみ編集 | シート全体を保護 |
| ダッシュボード | グラフやサマリーを表示する場所 | 閲覧者 | シート全体を保護 |
この4層構造を基本にすると、メンバーが触れるのは「入力シート」の指定エリアだけになります。集計シートの数式は物理的に保護されているため、誰が何をしようと壊れません。ダッシュボードは完全に閲覧専用なので、プレゼンや会議で画面共有しても安心です。入力シートとそれ以外を同じタブに混在させている設計が、実はトラブルの最大の温床であることに気づいてください。
ぶっちゃけこうした方がいい!
ここまで色々と技術的な対策やGASコード、設計パターンを解説してきましたが、正直に言います。数式が消える問題の本質は、技術でも仕様でもなく「全員が同じシートの同じタブを編集している」という設計ミスにあるのです。
情シスを10年以上やってきて断言できるのは、「入力する場所」と「計算する場所」を物理的にタブで分けるだけで、数式消失トラブルの95%はなくなるということです。残りの5%は、管理者自身がうっかりやらかすパターンですが、それもGASの自動バックアップで救済できます。
ぶっちゃけ、保護設定を一つ一つ手作業でやるのは面倒くさいし、長続きしません。だからこそ、最初のシート設計の段階で「このタブはメンバーが触るタブ、このタブは触らせないタブ」と決めてしまい、GASで一発保護をかける。このワンアクションだけで、もう数式消失で深夜に呼び出されることはなくなります。
そして2026年のいま、Geminiの進化で数式の再構築もだいぶラクになりました。でも正直なところ、AIに頼って壊れた数式を直すより、そもそも壊れない構造を最初に5分で作っておくほうが100倍効率的です。火事になってから最新の消火器を買うのではなく、火が出ない家を建てる。スプレッドシート運用の極意は、結局これに尽きます。
最後にもう一つだけ。数式が消えて困っている人に対して「なんで保護してなかったの?」と責めるのは絶対にやめてください。その人はたぶん、保護機能の存在自体を知らなかったんです。知っていれば最初からやっています。だから、この記事で紹介したGASコードを黙ってシートに仕込んでおく。それが情シスの仕事であり、チームへの最大の貢献です。技術は、人を責めるためではなく、人を守るために使いましょう。
このサイトをチップで応援
Googleスプレッドシートの共同編集で数式が消えることに関する疑問解決
フィルター操作で数式が消えることはありますか?
フィルターそのものが数式を削除することはありません。ただし、フィルターで行を非表示にした状態でデータを貼り付けると、見えていない行のセルにまで貼り付けが及んでしまい、結果的に数式が上書きされるケースがあります。フィルター使用中の貼り付け操作には十分注意してください。なお、複数人で同時にフィルターを使う場合は、個人ごとに独立したフィルター表示ができる「フィルタ表示」機能を使うと、他のメンバーの画面に影響を与えずに済みます。
変更履歴に保存期間の制限はありますか?
Googleスプレッドシートの変更履歴は、基本的に無期限で保持されます。ただし、編集頻度が高いファイルでは古い履歴がグループ化されて詳細が見づらくなることがあります。重要なマイルストーンでは前述の「名前付きバージョン」を活用しておくと、いつでもピンポイントで過去の状態を参照できます。なお、ファイルのコピーを作成した場合や、ダウンロードしたファイルには変更履歴が引き継がれない点にご注意ください。
Googleフォームと連携しているシートで数式が消えるのを防ぐには?
Googleフォームの回答が自動追加されるシートでは、新しい行が挿入されるたびに既存の数式がずれたり消えたりしやすいという構造的な問題があります。対策としては、回答データを直接集計するのではなく、別シートから
=QUERY()
関数で参照する方法が確実です。
=QUERY('フォームの回答 1'!A:D,"SELECT A,B,C,D",TRUE)
のように記述すれば、フォームの回答シートはデータの蓄積専用にして、集計・計算はすべて別シートで安全に行えます。より高度な方法として、
=MAP()
や
=LAMBDA()
といった配列関数を活用すれば、行の追加に動的に対応する数式を構築することも可能です。
スマートフォンからの編集で数式が壊れやすいというのは本当ですか?
スマートフォンのGoogleスプレッドシートアプリは、画面が小さいためにセルの選択ミスや意図しないタップが起きやすく、結果的に数式を誤って上書きしてしまうリスクが高いのは事実です。モバイルからの編集が必要な場合は、数式が含まれるセルをあらかじめ保護しておくか、データ入力専用のシートだけにアクセスさせる運用を検討してください。
Excel形式でダウンロードしたファイルを再アップロードしたら数式が変わってしまいました。なぜですか?
GoogleスプレッドシートとExcelでは、一部の関数の仕様に差異があります。たとえばGoogleスプレッドシート独自の関数(
=GOOGLEFINANCE()
、
=IMPORTRANGE()
など)はExcel形式に変換する際に失われます。また、書式設定やデータ形式がズレることで、数値がテキストとして認識され数式が正しく機能しなくなるケースもあります。Excel形式でのやり取りが必要な場合は、変換前に名前付きバージョンを保存しておくことを強くおすすめします。
今すぐパソコンやスマホの悩みを解決したい!どうしたらいい?
いま、あなたを悩ませているITの問題を解決します!
「エラーメッセージ、フリーズ、接続不良…もうイライラしない!」
あなたはこんな経験はありませんか?
✅ ExcelやWordの使い方がわからない💦
✅ 仕事の締め切り直前にパソコンがフリーズ💦
✅ 家族との大切な写真が突然見られなくなった💦
✅ オンライン会議に参加できずに焦った💦
✅ スマホの重くて重要な連絡ができなかった💦
平均的な人は、こうしたパソコンやスマホ関連の問題で年間73時間(約9日分の働く時間!)を無駄にしています。あなたの大切な時間が今この悩んでいる瞬間も失われています。
LINEでメッセージを送れば即時解決!
すでに多くの方が私の公式LINEからお悩みを解決しています。
最新のAIを使った自動応答機能を活用していますので、24時間いつでも即返信いたします。
誰でも無料で使えますので、安心して使えます。
問題は先のばしにするほど深刻化します。
小さなエラーがデータ消失や重大なシステム障害につながることも。解決できずに大切な機会を逃すリスクは、あなたが思う以上に高いのです。
あなたが今困っていて、すぐにでも解決したいのであれば下のボタンをクリックして、LINEからあなたのお困りごとを送って下さい。
ぜひ、あなたの悩みを私に解決させてください。
まとめ
Googleスプレッドシートの共同編集で数式が消えるトラブルは、原因さえ理解すれば確実に防げますし、万が一消えてしまっても変更履歴から完全に復元できます。もう一度ポイントを整理すると、まず数式セルの保護設定を必ず行うこと。次に入力エリアと計算エリアをシートで分離すること。そして重要なバージョンには必ず名前をつけて保存しておくこと。この3つを習慣にするだけで、共同編集のストレスは激減します。
2026年はGemini AIの統合がさらに加速し、スプレッドシートの使い方そのものが大きく変わりつつあります。Fill with Geminiによるデータ自動補完や、自然言語での複合操作、新関数
=SHEET()
と
=SHEETS()
による堅牢なタブ管理など、活用できる武器はどんどん増えています。「もしデータが消えても、Googleが全部覚えてくれている」という安心感を胸に、チームでの共同作業をもっと積極的に、もっと効率的に進めていきましょう。






コメント