【问题标题】:Copying formulas in Google Sheets - Is it possible to alter cell references?在 Google 表格中复制公式 - 是否可以更改单元格引用?
【发布时间】:2016-06-04 13:44:48
【问题描述】:

关于在 Google 表格中复制公式,我有几个问题要问。这些表格用于预订系统,供在我们的潜水船上参加一日游和课程的客户使用。

我有这个带有确切日期的公式,我需要将其复制到 B 列中的每 26 个单元格中...

问题1.与下面的公式有关...

=FILTER(MERQ!A:J, MERQ!D:D=date(2016,8,8))

Screenshot for question 1

有没有办法可以复制这个公式,这样日期每次都会增加一天,同时公式不会出现在下面的单元格中,而是每次都在第 26 行中?例如,在 C4、C30、C56 等中,我最初必须为五艘不同的船执行此操作一年半,接近 3,000 次。我只是无法面对单独改变每一个。

问题 2。与以下公式有关,该公式将显示每艘船每天的可用性。

=MER!B3

这次我需要下面单元格中的公式,但是行引用每次都需要向下更改 26 行。比如我需要...

=MER!B3 在 C3 中 =MER!B29 在 C4 中 =MER!B55,在C5等等,

如果我尝试复制我得到的公式...

=MER!B3 在 C3 中 =MER!B4 在 C4 中 =MER!B5 在 C5 等等,

Screenshot for question 2

同样,我需要为 5 艘船做一年半的工作,所以这非常耗时,尽管我想我可能会问一个问题,答案是无法完成。

【问题讨论】:

  • 我现在正处于手动更改每个公式的行引用的阶段,所以如果有人确认没有其他方法可以做到这一点,反之亦然,我非常欢迎他们的意见,谢谢。

标签: google-sheets formula copy-paste


【解决方案1】:

第二个问题更简单:将单元格引用构建为字符串并在indirect 中使用。

=indirect("MER!B" & (3 + 26*(ROW()-3)))

公式使用当前单元格的行来计算您引用的行。


第一个问题,关于在每 26 个单元格中放置一个公式,表明 (a) 您的数据组织不是最好的; (b) 您需要script 才能完成此任务。这是在单元格 C4、C30 等中设置所需公式的脚本,每次将日期增加 1。这个设置了 1000 个单元格(变量 k 的上限)。

function setFormulas() {
  var sheet = SpreadsheetApp.getActiveSheet();
  for (var k = 0; k < 1000; k++) {
    sheet.getRange(4 + 26*k, 3).setFormula('=FILTER(MERQ!A:J, MERQ!D:D=date(2016,8,8)+' + k + ')');
  }
}

【讨论】:

  • 我什至无法开始感谢您回答这两个问题!该脚本完全符合我的需要。非常感谢,非常感谢。
  • 我有另一个实例,我可以使用您向我展示的脚本,但由于我对脚本缺乏经验,到目前为止我无法正确调整它以使用新的公式和范围。从同一个工作簿中的另一张表中提取空格的公式,=AVL!B3 需要进入 MER 上的单元格 B7,然后 =AVL!B4 进入 MER 上的 B33,然后依此类推......(每个第 26 行,在 ColB 上)
  • 您需要更改getRange(4 + 26*k, 3) 的部分。这里第一个参数是行号,第二个是列号。因此,要从 B7 以 26 为增量,您需要 getRange(7 + 26*k, 2)
  • 感谢您的回复!关于列号和行号的参数是有道理的,谢谢。我不喜欢在这里继续提问,但是经过一个多小时或试验,并搜索这个论坛,我无法让脚本正常工作。到目前为止,我能做到的最好的方法是让 =AVL!C3 从 B7 开始进入 ColB 的每 26 行。我需要的是 B7 中的 =AVL!C3,然后是 B33 中的 =AVL!C4,然后是 B59 中的 =AVL!C5,等等。抱歉,我怀疑对大多数人来说是一个非常基本的问题,再次感谢您。
猜你喜欢
  • 2018-01-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-26
相关资源
最近更新 更多