Как заблокировать / защитить ячейки в Google Spreadsheets


9

Я создал очень простое приложение для работы с электронными таблицами в Google Spreadsheet для моей мамы. Но мне действительно нужно заблокировать / защитить ячейку формулами, чтобы она не могла их редактировать. Каждый раз, когда я велел ей попробовать новые версии, она переписывала формулы.

Есть идеи, как подойти к этому с технической точки зрения ?

Я искал в сети, и мне кажется, что это сейчас невозможно сделать в Google Apps.

Ответы:


9

В настоящее время невозможно заблокировать данную ячейку . Однако вы можете создавать новые листы в электронной таблице и блокировать их. Если вы действительно хотите помешать ей изменить формулы, вы можете поместить все результаты / формулы на второй лист, ссылаясь на данные первого листа, а затем заблокировать второй лист, чтобы он был доступен только для чтения.

Чтобы ссылаться на данные из одного листа в другом, используйте синтаксис sheetname!range. Например, чтобы взять среднее значение столбца листа sheet1 в строках со 2 по 10, вы должны использовать Average(sheet1!A2:A10).

Чтобы добавить листы, используйте +знак в нижней правой части электронной таблицы. Вы можете переключаться между листами и переименовывать их, используя вкладки и раскрывающиеся стрелки в левой нижней части электронной таблицы.

скриншот Google Docs


очень очень хорошее объяснение. Спасибо. Не уверен, что это можно использовать, если у вас есть простая таблица и вы хотите рассчитать суммы столбцов и строк. Пользователь обычно хочет видеть суммы и данные на одном экране. Хорошо, если она продолжит удалять формулы, у меня есть решение для этого :-)
Радек

Рад быть полезным. Также есть функция, importrangeкоторая может импортировать целый раздел одного листа в другой. Используя это, вы можете импортировать данные всего первого листа во второй лист, а затем отобразить все уравнения там рядом с данными, которым они соответствуют. В Google есть документация , которая может оказаться вам полезной. Это все еще не было бы идеальным решением, но было бы ближе, так как оно отображало бы все результаты на одной странице, по крайней мере, с исходными данными.
nhinkle

Похоже, что это единственное решение на данный момент .... спасибо
Радек

Нет проблем. Если вы в конечном итоге найдете лучшее решение, пожалуйста, обновите ваш пост; Мне было бы интересно услышать об этом.
nhinkle

4

Я обнаружил, что если вы создаете комментарий, прикрепленный к ячейкам, которые не должны редактироваться, вы можете попросить его предупредить кого-то, когда он наведет курсор мыши на ячейку, чтобы отредактировать его. Это, конечно, на самом деле не блокирует ячейку, но, надеюсь, достаточно раз увидит всплывающую заметку, и, возможно, ваша мама перестанет вручную менять эти цифры.

Я думаю, что вы можете добавлять комментарии только по одной ячейке за раз, поэтому, в зависимости от того, сколько ячеек являются формулами, это решение может быть нежизнеспособным.


Вы правы, что я не могу использовать это в этом случае, так как формулы находятся во всем столбце, но в некоторых случаях это будет отличным решением ...
Радек

4

Сегодняшний ответ - «Именованные и защищенные диапазоны» в меню «Данные». Работает плавно.


3
Ограничением этого решения является то, что владелец таблицы не может заблокировать ячейки против себя. Чтобы решить проблему ОП, ОП также должен иметь электронную таблицу и делиться ею с мамой.
MetaEd

Я не вижу никаких ограничений для этого решения. Не могли бы вы уточнить? Владелец смены защищает диапазон ячеек от себя тоже.
Радек

3

Вы можете использовать скрипт приложений Google, чтобы написать свой собственный механизм блокировки в JavaScript.

Например:

Допустим, у вас есть формула в столбце B, и она равна значению в столбце A + 1. Если мы посмотрим на ячейку (B3), она должна иметь формулу "= A3 + 1"

Чтобы написать скрипт для защиты от изменений, вы должны написать что-то вроде этого, используя Script Editor:

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, скрипт автоматически вернет вашу формулу и выдаст предупреждение.


3

Обходной путь - использовать проверку данных.

Перейдите в меню «Данные», нажмите «Проверка» ..., затем определите диапазон ячеек, которые необходимо «защитить». Пример: SheetA!F2:F9999. Затем выберите Критерии: Текст, равно. Затем введите в поле что-то вроде: "= *" без кавычек. Снимите флажок «разрешить неверные данные ...». Сохранить.

Это должно позволить пользователю только ввести значение, начинающееся со знака = (которое является началом вашей формулы защиты). Если они вводят знак =, они могут изменить эту ячейку.

Звездочка разрешает что-либо после = быть действительным. Вы могли бы указать это далее, чтобы защитить его больше: например: текст, равно =sum(*)или или =AVG(B*:D*)и т. Д.


1

Попробуйте сделать поля, где она должна вводить текст, другого цвета и попросите ее писать только в цветные прямоугольники.


1

Простое решение, когда в Excel возникла та же проблема:

Еще один способ сделать это - проверка данных. После того, как вы заполнили ячейку нужным содержимым,

Выберите Data Validation и используйте опцию Custom. Для формулы введите=""

Затем выберите «Отклонить ввод».


0

В Microsoft Excel я могу заблокировать весь лист, а затем выборочно разблокировать отдельные ячейки или диапазоны.

В таблицах Google я блокирую все ячейки в одном или нескольких отдельных диапазонах, кроме ячеек, которые должны быть доступны для ввода другим пользователям. Посмотрите этот пример листа Google, который я сделал сегодня: пример

Одним из отличий от Excel является то, что все на листе Google все заблокированные ячейки имеют серые диагональные полосы в качестве фона.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.