如何使用 ARRAYFORMULA 与上一行的偏移量而不会出现循环引用错误

2024-01-03

示例表:https://docs.google.com/spreadsheets/d/14ma-y3esh1S_EkzHpFBvLb0GzDZZiDsSVXFktH3Rr_E/edit?usp=sharing https://docs.google.com/spreadsheets/d/14ma-y3esh1S_EkzHpFBvLb0GzDZZiDsSVXFktH3Rr_E/edit?usp=sharing

在 ItemData 表的 B 列中,我通过将公式复制到该列中的每个单元格中来实现我想要的结果,但我想使用 ArrayFormula 来解决这个问题。

在 C 列中,我使用 ArrayFormula 获得了相同的结果。然而,对于加法,C 列引用 B 列中的单元格,而 B 列引用 B 列中的单元格。 B 列中的每个单元格都会向上一行的单元格加 1。

如果我选择 C3 公式文本并将其粘贴到单元格 B3 的单元格编辑字段中(为了在复制过程中不搞乱单元格引用 - 我知道我可以将它们设为静态引用,但这不是我的问题),单元格会收到错误的价值

#REF!

错误 检测到循环依赖。要通过迭代计算来解决,请参阅文件 > 电子表格设置。

请注意,两种情况下需要执行的加法是相同的:将上一行单元格的值加 1,因此不涉及循环引用。 B2 中提供了一个起始值,B3 及以下的单元格应使用上一行 B 单元格中的数据。

另请注意,我确实尝试了“文件”->“电子表格”设置并启用最多 25 个项目的循环引用计算,但这仅填充前两个单元格(B3 和 B4)。

我怎么解决这个问题?我更喜欢像 ArrayFormula 这样的东西,其中公式仅存在于单个单元格中。但只要在中间插入或在底部添加的任何新行都会在 B 列中添加相同的公式,复制粘贴就是可以接受的。


将匹配项目always是连续的吗?看起来是这样,因为您在公式逻辑中将每个项目单元格与其上方的单元格进行比较。这打破了电子表格标准化的[不成文?]规则;价值观'地址它们本身通常不应被视为数据。

如果您决心这样做,您是否考虑过明确使用位置作为数据源?例子:

=ARRAYFORMULA(IFS(
  NOT(LEN(A3:A40)),,
  ROW(A3:A40)-3-MATCH(A3:A40,A$3:A$40,0)<=VLOOKUP(VLOOKUP(A3:A40,Items!$A$2:$D,2,false),DataPerColor!$A$2:$B,2,false),ROW(A3:A40)-3-MATCH(A3:A40,A$3:A$40,0),
  true,
))

就像你的公式一样,英文的全部内容是:

for each row,  
if there's no Item, don't output any ItemData,  
if the number that belongs in this cell¹ is less than or equal to the lookup, print it,  
otherwise, don't output any ItemData

但是,“属于该单元格的数字”是什么?我们如何在不使用 B 列的情况下计算它呢?我滥用物品的位置来获取它。往下看 B 行,出现的每个数字只是:

this row's number,  minus  
the row where items start [always 3],  minus  
the row number [in just the Item rows] of the first row containing this row's Item

Using 倒数第二个项目C举个例子:第一个 ItemC 是第 16 个项目列表,我们正在查找的项目...“倒数第二个 ItemC”位于工作表的第 21 行。 21-3-16 = 2 …你想要的数字。

如果您能接受,它是单一配方,并且可以根据您的规格发挥作用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 ARRAYFORMULA 与上一行的偏移量而不会出现循环引用错误 的相关文章

  • 使用 TextFinder 搜索范围比搜索整个工作表慢

    我有一张有很多行的表 数千行 我想在特定列中搜索文本 我在用Range createTextFinder但它超时了 如果Sheet只有4行数据 甚至会超时 This is very slow var found sheet getRange
  • 当 Google 电子表格中的单元格更新时通过电子邮件通知

    我是脚本新手 添加了这个有效的脚本 function sendEmailAlert var ss SpreadsheetApp getActiveSpreadsheet var cellValue ss getActiveSheet get
  • 如何在调度代码时自动选择R中googlesheets4中的预授权帐户?

    我试图弄清楚自动允许 googlesheet4 包选择我的预授权帐户来下载特定谷歌表格的方法是什么 例如 我想每天运行以下一次 library googlesheets4 delta lt read sheet https docs goo
  • 检查 DST 是否生效

    In PHP date I 会告诉我夏令时是否有效 这是否告诉我 DST 是否专门针对我的服务器配置的时区有效 或者是否在有效期间 我在亚利桑那州 那里不遵守夏令时 因此 我需要我的服务器认识到纽约现在比我早 2 小时 但是当明年 3 月夏
  • 为什么 copyTo(... PASTE_VALUES) 在宏中间不起作用?

    我长期使用的电子表格技术之一是就地复制 粘贴特殊值 C PSV 使用公式生成我感兴趣的值后 I C PSV 然后可以删除源数据 所以我写了一个使用这种技术的宏 但单元格最终是空的 但如果我将宏分成两个 在 C PSV 之前结束第一个宏 那么
  • 支持 Apps Script Web App 5000 个并发用户

    我正在为 G Suite 客户构建一个小型应用程序 该应用程序将供客户的所有员工使用 在高峰时段可以看到多达 5 000 名并发用户 他们没有应用程序制作工具 也不打算很快启用应用程序制作工具 Apps 脚本 Web 应用程序能够处理这么多
  • 电子表格的授权范围

    我创建了一个独立的 Google Apps 脚本 它不属于任何文档 该脚本会以固定的时间间隔自动触发 这个脚本 创建几个文件夹 如果它们不存在 创建一个 Google 电子表格 如果不存在 读过说 电子表格 更新日历事件 我注意到 当我第一
  • Google Sheets API v4:batchGet 不起作用

    无法使用 batchGet 让 Google Sheets API v4 返回多个范围值 它给出以下错误 尽管文档说它需要 valueRanges 但所有范围和电子表格 ID 都是正确的 额外的参数块必须是 javascript 对象文字
  • 使用 Sheets API v4 获取与 Google 帐户关联的所有电子表格的列表

    使用 Google Sheets API v4 我希望获取附加到我的帐户的电子表格列表 我做了很多研究 但还没有找到任何解决方案 v4 API 不提供列出电子表格的方法 您需要使用 Drive API 这从以前的 API 页面迁移 http
  • 需要从表单生成的工作表中移动行

    我有一个调查表 我需要我的团队查看一次 但之后我希望我的团队将其设置为 已关闭 的行保存到存档表中 过去 我在其他工作表中使用过此脚本 但它似乎不适用于表单链接工作表 经过研究 我发现您无法从表单链接表中剪切 但可以删除行 我的理论是脚本正
  • Google应用程序脚本忽略数据验证错误

    我有一些具有数据验证规则的工作表可用作下拉列表 当尝试将其他 未经验证的 数据插入这些单元格时 我的代码现在会产生错误 我正在寻找一种方法来忽略数据验证规则并插入数据而不更改已设置的数据验证规则 我只想忽略应用程序脚本错误 您在单元格 U4
  • 两列单元格列表(下拉列表) - Google Sheet

    我需要一个两列单元格列表 下拉列表 默认情况下 使用数据验证选项我们只能在单元格列表中看到单列值 但我想从两个不同的列填充列表 请看下面的示例表 Example Table Column A Column B Sr 1 Product On
  • Google 脚本图表默认排除标题

    使用以下脚本 function chartCreation var ss SpreadsheetApp getActive var sheet ss getSheetByName Sheet1 var chart sheet newChar
  • 如何在链接到表单的工作表中执行 Google 工作表脚本之前等待 Google 表单脚本完成执行

    我有两个脚本 一个链接到 Google 表单 另一个链接到 Google 表格 我需要确保 Google 表单脚本在执行链接到 Google 表单的工作表的 Google 工作表脚本主体之前完成执行 如何才能做到这一点 需要等待 Googl
  • 如何更改主题的起始偏移量?

    是否可以更改新主题的起始偏移量 我想创建一个新主题并从偏移量开始阅读10000 How 自从卡夫卡0 11 0 0 https issues apache org jira browse KAFKA 4743你可以使用脚本kafka con
  • 将活动工作表作为电子邮件附件从 Google 工作表发送

    我有一个谷歌表单 可以捕获电子表格中的响应 目前 每次做出新响应时 它都会创建一个新工作表 我现在尝试将 邮寄活动工作表脚本 添加到创建新工作表的现有脚本中 但是我收到错误 请求失败https docs google com spreads
  • 如何使用 OnChange() 触发器

    我有一个电子表格以及该电子表格的主副本 每次用户将数据输入单元格时 它都会获取新数据并放入主副本中 然而最近 我注意到一个用户创建了一个新列 该列未被 OnEdit 捕获 于是我查了一下 看到了去年实现的OnChange 但是 我不知道如何
  • 指向特定工作表的超链接

    我想从另一个电子表格中的超链接打开 Google 表格的特定工作表 我的主电子表格中有不同的链接 每个链接都应该有一个指向同一从属电子表格但指向不同工作表的超链接 我知道超链接功能 但它不会转到特定的工作表 您可以使用此自定义脚本 工具 g
  • 一起使用“过滤”和“排序”的 Google 表格

    这是我的第一个问题 我希望一切都好 我是使用谷歌表格的新手 但我正在慢慢进步 我正在尝试构建一个工作表 其中包含工作表 1 中的所有数据 在工作表 2 上 我想过滤工作表 2 中 D 列中标有数字 1 的所有数据 为此 我正在使用 FILT
  • 分层对象和 AutoFixture

    我已经实现了一个用于存储标签的类 标签集合必须是分层的 所以我的类是 public class Tag public int Id get set public int Description get set public Tag Pare

随机推荐