Google apps script 如何用另一个单元格锁定动态生成的单元格的内容 出身背景

Google apps script 如何用另一个单元格锁定动态生成的单元格的内容 出身背景,google-apps-script,google-sheets,array-formulas,Google Apps Script,Google Sheets,Array Formulas,我喜欢使用cardboardit.com从客户那里收集需求,并为他们创建评估。我目前正在对我过去完成的一个项目进行抽样评估 Cardboardit提供将数据转储到csv文件的功能,该文件可以是工作表中“数据”选项卡中的原始格式 “数据”选项卡非常原始,因此我使用以下公式使其在“估算”选项卡中看起来更漂亮: =查询数据!A2:J,选择C、E、D,其中A='card'和E'white'按I排序,J标签C'名称',E'颜色',D'注释',0 然后我请工程师在行中填写估算值。工程师在另外两列“前端”和“

我喜欢使用cardboardit.com从客户那里收集需求,并为他们创建评估。我目前正在对我过去完成的一个项目进行抽样评估

Cardboardit提供将数据转储到csv文件的功能,该文件可以是工作表中“数据”选项卡中的原始格式

“数据”选项卡非常原始,因此我使用以下公式使其在“估算”选项卡中看起来更漂亮:

=查询数据!A2:J,选择C、E、D,其中A='card'和E'white'按I排序,J标签C'名称',E'颜色',D'注释',0

然后我请工程师在行中填写估算值。工程师在另外两列“前端”和“后端”下填写估算

问题 问题是当我意识到我遗漏了用户地图中的一些元素时。因此,我调整了用户地图,再次导出数据并将其转储到数据表中。考虑到上述公式是明智的,估算表会立即准确更新

然而,问题是工程师输入的值现在与新值不一致。。Ie称为“编辑vibereel”的前端任务以前估计为1天,但一旦输入新数据。。那个放错地方了

问题 我怎样才能这样做呢 -每当工程师在这两列下输入一个值时,这些值就会被锁定,或链接到“名称”列下他们最初打算执行的任务

替代问题 解决此问题的另一种方法是,每次由于用户地图的更改而更改数据表时。。新的数据集可以转储到新的数据表ie data-v2中,并且可以创建另一个估算表ie ESTATE-v2。这在商业上是有意义的,因为它向客户显示了估计值的变化。。在这种情况下,如何简单地将估算值从估算值复制粘贴到估算值v2,并将其链接到适当的估算值?

可能的解决方案

它太大了,无法在单个答案中发布,但计划是:

再制作一个“帮助”选项卡来存储数据。 按ID连接当前选项卡和“帮助”选项卡。示例中的ID是A列:名称。使用ArrayFormula+vlookup使其动态更新。 使脚本OneEdit:在当前选项卡中编辑目标列时→ 读取值→ 透明细胞→ 将值粘贴到“帮助”选项卡中。公式将返回正确的值。 我已经在我的项目中实现了这一点。缺点是您必须等待大约0.5秒。当您编辑单元格时脚本正在运行时

我已经做了,你可以测试一下。

简短回答 无法直接将手动输入的值锁定到公式结果行。而是使用后端/前端体系结构类型

概括说明 后端表。创建一张纸,用作纸板的镜子吧!工程师在电子表格中输入的数据和估算值一个后端,两个前端

1.1备选方案1:使用脚本更新两个来源的数据值。 1.2备选方案2:使用公式连接两个来源的数据值

前端工作区。使用此表手动输入时间估算的数据

2.1为了更轻松地保持数据同步,请将纸板上的id包括在内!CSV文件,假定这是一个持久ID

2.1.1您可以隐藏此列以保持当前布局的外观。 2.2从后端表传递数据

2.2.1如果您继续使用公式,请冻结数据,以防止手动输入的估算值仅通过复制和粘贴值不对齐。这可以通过使用UI命令、键盘快捷键或脚本来实现。 评论 如果您将在会议上使用电子表格,我认为时间驱动触发器或自定义菜单优于编辑触发器,因为运行脚本需要时间,以避免会议期间分心

如果要保留修订,请在每次导入CSV文件或召开评估审核会议时复制电子表格。将副本保留为修订快照,并继续处理原始文件。这是因为GoogleSheets修订历史可能有太多的细节,无法轻松跳转到主要修订,但如果需要进行详细的历史修订,则可能会有所帮助

稍后,您可以使用IMPORTRANGE将所有修订估算放在一起,即制作估算随时间变化的图表

基于公式的实现示例。 起点 假设您有两个电子表格 -数据:它保存第一次导出到CSV文件的数据。 -估计:它保持屏幕截图上显示的布局

第一步 将id值添加到估算表中。假设它作为D列插入

步骤2 在对硬纸板上的硬纸板进行了更改之后!,下载并导入一个新的CSV文件,假设此新工作表名为data-v2。为简单起见,在本例中 它被添加到同一个电子表格中

步骤3 将以下公式添加到data-v2!L1

=ArrayFormulaARRAY_constraint{{frontend,backend};IFERRORVLOOKUPB2:B,{'estimate-v1'!D:D,'estimate-v1'!E:F},{2,3},FALSE,},countaA:A,2000000

注释公式 步骤4 为新评估审核创建新工作表。 将以下公式添加到A1

=QUERY('data-v2'!A2:M,"select C,E,D,B,L,M where A='card' and E<>'white' order by I,J 
label C 'name', E 'color', D 'notes', B 'id', L 'front end', M 'backend' ",0)
选择全部,复制并粘贴为值

应用格式和公式计算估算总额。 硬纸板!CSV标题 友善的 身份证件 名称 描述 颜色 地位 大小 注释 x Y 图片地址 另见 工具书类
Excel和Google工作表相似,但不相同。例如,查询电子表格功能在Excel中不可用,但它有另一个工具来执行类似的任务。实际上,它做的更多,但它只在可安装的应用程序上工作,好吧。您的想法似乎很有趣。。但我需要一些工作样本来证明它的工作,因为它留下了很多想象力。如果您喜欢使用较小的数据集,您可以将其应用于我的工作表或您自己的样本工作表。我已经制作了一个样本,请尝试。您的答案不适用于此公式中的b/c:{Id;ArrayForMularRowIndirectA1:a&maxdata!b:b}您正在获取最大数据!B:B。。也就是说,用户地图生成的984060 id具有巨大的价值。。所以,当我把公式,我得到这个错误:结果不是自动展开,请插入更多行934061。。。请参阅我在您提供的样本电子表格上测试的实验。。当我添加的ID不符合顺序并且不是从1开始时,它就坏了,看,您的电子表格中真的有984060行吗?我所说的身份证是指入境人数。如果不是,则脚本还必须从帮助表中读取所有ID,这将减慢脚本的速度。对于此部分=查询“data-v2”!A2:M,选择C、E、D、B、L、M,其中A='card'和E'white'按I排序,J标签C'name',E'color',D'notes',B'id',L'front end',M'backend',0假设我只想在estimate-v2上提供估算的默认值,但也允许工程师修改其旧估算。。我只需手动复制前端和后端列中的值,对吗?ie仅粘贴值或者您可以使用右侧的列来进行新的估算。
=QUERY('data-v2'!A2:M,"select C,E,D,B,L,M where A='card' and E<>'white' order by I,J 
label C 'name', E 'color', D 'notes', B 'id', L 'front end', M 'backend' ",0)