回答:
現在、特定のセルをロックすることはできません。ただし、スプレッドシートで新しいシートを作成してロックすることはできます。彼女が数式を変更できないようにする場合は、すべての結果/数式を2番目のシートに入れて、最初のシートのデータを参照し、2番目のシートをロックして、読み取り専用にすることができます。
別のシートのデータを参照するには、構文を使用しますsheetname!range
。たとえば、2行目から10行目までのシート1の列Aの平均を取るには、を使用しますAverage(sheet1!A2:A10)
。
シートを追加する+
には、スプレッドシートの右下にある記号を使用します。スプレッドシートの左下にあるタブとドロップダウン矢印を使用して、シートを切り替えたり名前を変更したりできます。
importrange
あるシートのセクション全体を別のシートにインポートできるという関数もあります。これを使用して、最初のシートのデータ全体を2番目のシートにインポートし、対応するデータの近くにある数式をすべて表示できます。Googleにはそのためのドキュメントがあります。それでも完璧な解決策にはなりませんが、少なくとも元のデータを含む1つのページにすべての結果が表示されるため、より近いものになります。
編集してはいけないセルに添付されたコメントを作成すると、セルの上にマウスを置いて編集するときに誰かに警告することができることがわかりました。もちろん、実際にはセルをロックしませんが、うまくいけば、メモがポップアップ表示されるのに十分な時間があれば、お母さんが手動でこれらの数値を変更するのをやめるでしょう。
コメントを追加できるのは一度に1つのセルだけなので、数式であるセルの数によっては、この解決策が実行できない場合があります。
Googleアプリスクリプトを使用して、JavaScriptで独自のロックメカニズムを記述できます。
例えば:
列Bに数式があり、それが列A + 1の値と等しいとしましょう。セル(B3)を見ると、「= A3 + 1」という数式が含まれているはずです。
これを変更から保護するスクリプトを作成するには、スクリプトエディターを使用して次のように記述します。
function onEdit(event)
{
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = SpreadsheetApp.getActiveSheet();
var CellRow = SpreadsheetApp.getActiveRange().getRow();
var CellColumn = SpreadsheetApp.getActiveRange().getColumn();
if (CellColumn == 2){
sheet.getRange(CellRow, CellColumn).setFormula("=A"+CellRow+"+1");
Browser.msgBox("DON'T MESS WITH THE FORMULAS!");
}
}
誰かが列Bのセルを編集するたびに機能する場合、スクリプトは自動的に数式を元に戻し、警告メッセージを表示します。
これを回避するには、データ検証を使用します。
[データ]メニューに移動し、[検証...]をクリックして、「保護」する必要のあるセルの範囲を定義します。例: SheetA!F2:F9999
。次に、[基準:テキスト、等しい]を選択します。次に、ボックスに「= *」のように入力します。引用符は不要です。[無効なデータを許可...]チェックボックスをオフにします。セーブ。
これにより、ユーザーは=記号(保護する数式の先頭)で始まる値のみを入力できるようになります。=記号を入力すると、そのセルを変更できます。
アスタリスクを使用すると、=の後のすべてが有効になります。さらに指定して、保護することもできます:例:テキスト、等しい=sum(*)
、または=AVG(B*:D*)
、など...
テキストを入力することになっているボックスを別の色にして、色の付いたボックスだけに書き込むように彼女に伝えてください。
Excelが同じ問題を抱えていたときの簡単な解決策:
これを行うもう1つの方法は、データ検証を使用することです。セルに必要なコンテンツを入力したら、
データ検証を選択し、カスタムオプションを使用します。式には、=""
次に、「入力を拒否」を選択します。