【问题标题】:Is is possible in google sheet to protect certain columns, but allow rows to be added/removed?谷歌表中是否可以保护某些列,但允许添加/删除行?
【发布时间】:2021-01-07 09:55:22
【问题描述】:

我正在使用 arrayformulas 填充工作表的某些列,具体取决于其他工作表中的值。有时用户会不小心在这些列中添加一些值,这会导致 arrayformula 无法正常工作。我想保护这些列,但仍然允许添加/编辑/删除行。

考虑这个示例电子表格:我希望 Id 行受到保护,但允许添加/删除行。

https://docs.google.com/spreadsheets/d/1Dnj7OE5XZL09gllHVwPgv-5GRoM-lxVCxTCI_-kURdM/edit#gid=0

Google 表格完全可以做到这一点吗?

【问题讨论】:

    标签: google-sheets google-sheets-formula


    【解决方案1】:

    您不能直接禁用输入,但可以改用数据验证

    通过转到 数据 > 数据验证并填写以下内容:

    单元格范围: YourSheet!C2:C

    条件:自定义公式为 - =C2:C = A2:A & "["&B2:B&"]"

    关于无效数据:拒绝输入

    外观:可选消息

    完成此操作后,尝试填充 C 列中的某个单元格,您将看到一条消息:出现问题 - 您的可选消息

    作为一种不同的方法,您可以使用 Apps 脚本简单触发器

    转到工具>脚本编辑器并复制以下代码:

    function onEdit(e) {
      var column = e.range.getColumn();
      var sheet = SpreadsheetApp.getActiveSheet();
      if (column === 3) {
        e.range.setValue("");
      }
    }
    

    这更像是一个“撤消”功能。

    参考

    Simple Triggers

    Event Objects > onEdit

    【讨论】:

    • 好吧,我不想使用应用程序脚本,因为我有很多这样的脚本,所以我必须实现某种方式以编程方式向它们添加触发代码或重新克隆它们,这是可能的,但要付出很多努力。然而,第一个解决方案很棒,唯一的缺陷是范围中包含的所有单元格都无效,因此在角落显示红色三角形(请参阅我的工作表)这会变得非常混乱,因为我有很多这样的列。有没有办法禁用这个恼人的红色三角形?
    • 您好,是的,可以这样做,我只是想在这种特定情况下提供一个想法,请查看新的编辑。
    【解决方案2】:

    可以使用以下公式通过蛮力添加行:

    =ARRAYFORMULA(ROW(INDIRECT("1:"&ROWS(A:A)+1)))
    

    但升级无法控制

    【讨论】:

    • 这对我一点帮助都没有。它只是垃圾邮件行。我需要弄清楚是否可以在不禁用用户操作行的能力的情况下锁定列。
    猜你喜欢
    • 2021-04-16
    • 2014-06-18
    • 1970-01-01
    • 1970-01-01
    • 2020-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多