假设我有一张桌子:
数量 | 项目 | 价值 | 获取的项目 | 建议 |
---|---|---|---|---|
5 | 肉 | 变量 | 肉 | ... |
Value 列中的单元格有一个 VLOOKUP 公式,用于获取与“Item”同名的项目的值,如果不合适则返回“Variable”(这意味着有多个选项)。 Suggestion 列中的 Cells 有一个 VLOOKUP 公式,用于获取与“Item”同名的类别中价值最低的项目,如果没有这样的类别,则返回“”(这意味着该项目会在值列的搜索)。搜索后,表格如下所示:
数量 | 项目 | 价值 | 获取的项目 | 建议 |
---|---|---|---|---|
5 | 肉 | 变量 | 肉 | 牛肉 |
现在,不会使用 D 列和 E 列,因此用户将 B 列更改为包含建议的项目。
数量 | 项目 | 价值 | 获取的项目 | 建议 |
---|---|---|---|---|
5 | 牛肉 | 300 | 肉 | 牛肉 |
所以我不希望用户必须将“肉”放在“获取的项目”列中才能使其工作,所以假设该列只有一个简单的 =B2
公式。工作表现在看起来像这样:
数量 | 项目 | 价值 | 获取的项目 | 建议 |
---|---|---|---|---|
5 | 牛肉 | 300 | 牛肉 |
但是,建议公式引用的表会定期更新值,因此现在牛肉比猪肉贵。我希望表格看起来像这样:
数量 | 项目 | 价值 | 获取的项目 | 建议 |
---|---|---|---|---|
5 | 牛肉 | 300 | 肉 | 猪肉 |
这样,用户可以相应地更新 B 列。这意味着我需要某种方式让 D 列自动复制 B 列的内容 如果 C 列读取“变量”,同时忽略 B 列的未来更改。
=IF($C5="Variable",[copy $B5],"")
像这样,我猜?我想最简单的方法是“有没有办法自动运行一次公式?”,这比我的旧标题“在引用单元格时拍摄数据的“快照”更好,因此它不会引用的单元格是否更改?”,所以我已经相应地更改了它。
答案 0 :(得分:0)
您可以使用 onEdit trigger,使用 Apps 脚本(点击 Tools > Script editor
,复制下面的函数并保存项目)。
(为此,请创建一个新列 (G
),该列将用于存储有关是否存在先前副本的信息。然后您可以将其隐藏。)
每次用户编辑电子表格时都会执行此函数,它会使用 event object 执行以下操作:
Item
,并且已编辑的列是否是您想要的工作表(您提供的电子表格中的列 C
和工作表 Recipe Cards
)。Value
列 (D
) 是否等于 Variable
,列 G
是否等于某个字符串(称为 {{1} } 在下面的示例中)。Avoid future updates
设置为 C
并将 E
写入列 Avoid future updates
。G