将函数应用于电子表格中的一系列单元格

Apply a function to a range of cells in a spreadsheet

具有相似标题的主题中的答案并没有为我的特定问题提供太多解决方案,但可能我没有问正确的问题。知道我在电子表格方面绝对是菜鸟可能会有所帮助,所以找到我的方法几乎是零。

目前我可以在第一个单元格A1中设置基本功能=ROW()

简单吧?那么现在复杂的事情来了。如果我单击单元格的右下角并开始拖动,我就可以将相同的功能应用于整个单元格范围。假设我从 A1:A10 应用它。该组中的每个单元现在都具有相同的功能。

万岁!我们做到了,对吧?我将函数应用于一系列单元格,每个单元格都有自己的输出。但是等一下,如果我然后返回到原始单元格并更改其公式 none,其他单元格也会随之更改。 GRRRRRR!!!!

我提出了一些修复方法,但不一定知道如何实施。第一种是让每个单元格 link 回到原始单元格并引用其功能。如果我想随机散布有关文档的相关单元格,这将很有用。另一个在有序组中会更有用,在有序组中,您可以通过在原始单元格中指定要将函数应用到的数组的大小来了解确切的尺寸。

话虽如此,让我听听您的想法。


我最接近的答案是使用 FORMULA() 其中 returns 单元格用作文本的公式。不幸的是,所有关于评估文本的答案都求助于脚本。多么奇怪!我以为这样的事情会很普遍。不妨开始编写脚本。


等等,我可能说得太早了。 =MUNIT() 可以组成一个数组,但它只是正方形。糟了!


好的...我希望斑马条纹最终会成为它自己的答案,除非有人抢先一步。因此,可以使用 ={1,2;3,4} 创建一个简单的数组,其中逗号按列分隔值,分号按行分隔值,除了要生成它你必须按 Control+Shift+Enter (因为原因?)。我现在在想,我需要拥有可以根据每一行的单个函数生成值列表的函数,并祈祷它会起作用。所以,回到寻找。 (哇,这要花很长时间)


我假设的方式甚至无法生成 1x1,例如 ={ROW()} returns Err:512 这是公式溢出。


好的,到目前为止,我已经缩小了两个选项的范围,

1) link every cell to the original formula
2) populate an array with a single formula

每个人都有自己不完整的答案,

a) use FORMULA() to return the formula of a cell as text
b) create a hypothetical array like so ={LIST_OF_VALUES()}

这些都需要 nonexistent EVALUATE() 函数的奇怪形式才能正确 'function'。是不是很好玩?


Google Sheets 通过允许 ={ROW()}Control+Shift+Enter 生成 =ArrayFormula({ROW()}) 来处理情况 b。在电子表格的世界中似乎不存在使用单个函数填充任何大小数组的一般情况。这非常令人难过,因为我想不出更好的工具来完成我想做的事情。复制粘贴直到我需要使用宏。

当然,您可以编写一些复杂的代码来更新函数,但简单的方法不是像以前一样将它拖到相同的单元格范围吗?它应该正确地覆盖那里现有的代码,如果没有,您可以轻松删除过时的代码并将新代码拖入。

根据您的具体用例,创建 user-defined function 可能会有所帮助:

  • 使用 Basic IDE 创建您的函数;
  • 将其应用于任何 sheet;
  • 上的任何单元格
  • 修改 Basic 代码将影响所有使用该函数的单元格。

我已经在 answer on superuser.

中详细说明了这些步骤

最好的方法可能是简单地将修改后的公式拖到单元格范围内(如 OldBunny2800 所建议的那样)。与自定义宏相比,这更不易出错且更易于维护。

另一种选择是使用 array function。然后您只需编辑函数一次,相同的编辑将自动应用于该数组函数中的整个单元格范围。