google-sheets-formula - 添加列后自动更新公式
问题描述
我的问题已在此处处理,但我无法思考并将其应用于我的公式
我真的很感谢这里的一些帮助。谢谢!!!
这是我得到的公式:
=IF($A$14=NAMES!$W2;$D15;
IF($A$14=NAMES!$W3;$G15;
IF($A$14=NAMES!$W4;$J15;
IF($A$14=NAMES!$W5;$M15;
IF($A$14=NAMES!$W6;$P15;
0)))))
再插入三列后,它必须转到:
=IF($A$14=NAMES!$W2;$D15;
IF($A$14=NAMES!$W3;$G15;
IF($A$14=NAMES!$W4;$J15;
IF($A$14=NAMES!$W5;$M15;
IF($A$14=NAMES!$W6;$P15;
IF($A$14=NAMES!$W7;$S15;
0))))))
在右侧再添加 3 列后,它会查找 $A$14 中的值,如果它与 NAMES!$W + i中的值匹配,其中i是递增 1 的行,那么它会返回相同的特定列第 15 行,无论是 $D15、$G15、$J15,总是跳三列。
这 3 列是通过基于 GAS 中的日期/时间的触发器自动插入的,但我无法通过 GAS 自动更新公式。
我什至不确定这是否可能。
请帮忙!
谢谢!
由于评论太短,我再次在这里写:
你是对的!
这是具有编辑器访问权限的工作表的链接。
https://docs.google.com/spreadsheets/d/1Qkb96SgZ4dLRBebgxEiNkYiZ4sTtps-ZbBtBtE4J5os/edit?usp=sharing
所以基本上,每当创建新的一年或添加 3 列以上时,C15、C16 和 C17 中的公式都会自动更新
C15 =IF($A$14=日期!$A2;$D15;IF($A$14=日期!$A3;$G15;0)) 到 =IF($A$14=日期!$A2;$D15;IF ($A$14=日期!$A3;$G15;IF($A$14=日期!$A3;$J15;0;0)))
C16 =IF($A14=日期!$A2;$D16+$E15+$B13;IF($A14=日期!$A3;$G16+$H15;0)) 到 =IF($A14=日期!$A2;$ D16+$E15+$B13;IF($A14=日期!$A3;$G16+$H15;IF($A14=日期!$A3;$J16+$K15;0)))
C17=IF($A14=日期!$A2;$D17;IF($A14=日期!$A3;$D17+$G17;0)) 到 =IF($A14=日期!$A2;$D17;IF( $A14=日期!$A3;$D17+$G17;IF($A14=日期!$A3;$D17+$G17+J17;0)))
等等...
解决方案
丹尼尔,我试过了,并找到了一种方法来获得你的部分答案。我相信您的其他问题可以以同样的方式解决。查看样品表中的选项卡 Test-GK。您的原始公式在 C15 中;我的是C19。当您更改 B14 中的值时,两者都会更新。
我使用了一个公式来计算需要使用哪个单元格,而不是大量的 IF 语句。公式如下。
=INDIRECT(ADDRESS(15;(MATCH(A14;Dates!$A$2:$A$15;0))*3+1;4))
这使用 MATCH 从您的日期值中获取日期范围的“偏移”值。然后将其乘以 3 以跳转到右列。
因此,对于您列表中的第一个日期范围“a 31 de diciembre 2018”,MATCH 返回“1”(列表中的第一个日期范围)乘以 3 加 1 等于“4”,ADDRESS 将其转换为“D”列。使用您的工作表,该行始终为 15。所以 ADDRESS(15,1,4) 返回 D15。INDIRECT 得到 D15 的值。
我认为相同的原理可以用于 C16 中的公式。但我不清楚那个公式在做什么。您的脚本是否将值放入 B13?
让我知道这是否有用。
更新#1。我现在也有公式(我认为)来替换 C16 中的公式。除了第三个任期,加 B$13,只在第一个情况下?如有必要,可以使用一个 IF 语句来处理,以检查数据范围是否为“a 31 de diciembre 2018”。
让我知道如何使用 B13 值...
更新#2。还添加了一个公式来替换 C17 中的 IF。实际上相同,但使用 CHOOSE 函数来选择将哪些术语添加在一起,而不是使用 IF。如果您在日期范围内添加更多年份,可能会更清楚地维护。在 C17 中尝试这个公式 - 仔细检查逻辑。
=CHOOSE(MATCH(A14;Dates!$A$2:$A$15;0); D17; D17+G17; D17+G17+J17; D17+G17+J17+M17; D17+G17+J17+M17+P17; D17+G17+J17+M17+P17+S17; D17+G17+J17+M17+P17+S17+V17; D17+G17+J17+M17+P17+S17+V17+Y17)
到 2025 年就好了,但如果你还需要五年左右,你可以让它更长。也许有一种方法可以动态构建它,但我现在没有时间。
推荐阅读
- java - 如何在 Apache Beam 中同时使用 MapElements 和 KV?
- css - IE11 无法识别 z-index:-1
- opengl - 无法使用我的图像获得透视
- windows - 如何从命令提示符运行 ffmpeg
- javascript - 如何清除和覆盖表格结果
- javascript - 捕获 waitForSelector 错误
- arrays - 分段错误 Core Dumped X86 Assembly Array
- c# - 如何等待带有回调的外部响应?
- javascript - 如何计算同一天的持续时间?
- google-cloud-platform - 用于 DataFlow 和 DataPrep 的 ZONE_RESOURCE_POOL_EXHAUSTED