首页 > 解决方案 > Google 表格 - 将 A1 更改为 A2 到 A3 的脚本,......在公式中

问题描述

我想在谷歌电子表格上做一些基本的事情,但我没有编码经验。我已经尝试搜索类似的脚本,但我不确定要查找什么。

我有 2 张纸:

Questions是一长串问题(A 列)和答案(B 列)。此表将在将来隐藏。

Quiz是问题及其答案(来自Questions工作表)出现的地方。


我想要一个“下一步”按钮,它可以将当前的问题和答案更改为以下内容。在工作Quiz表上,我有一个=Questions!A1显示 question1 和=Questions!B1answer1 的公式。

我已经知道如何将脚本分配给按钮,所以没关系。我需要的是一个脚本,每次单击时都会将公式从=Questions!A1to更改为=Questions!A2to等等。=Questions!A3

答案也一样:从=Questions!B1=Questions!B2=Questions!B3等等。

标签: excelgoogle-apps-scriptgoogle-sheets

解决方案


回答:

您可以通过增加公式的 R1C1 表示法来做到这一点。

代码:

// Copyright 2020 Google LLC.
// SPDX-License-Identifier: Apache-2.0

function onButtonClick() {
  var s = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  let r = s.getRange('A2:B2')
  let f = r.getFormulasR1C1();
  var n = [];

  f.forEach(function(c) {
    let row = (parseInt(c[0].match(/R\[([0-9]*)\]/)[1]) + 1);
    n.push(["=Questions!R[" + row + "]C[0]"])
  });
  r.setFormulaR1C1(n)
}

此脚本的概要:

  • 从“测验”表中获取问题和答案的范围(在本例中假定为A2:B2
  • 获取这些单元格中的公式作为R1C1符号
  • 使用正则表达式/R\[([0-9]*)\]/获取行的当前增量
    • 将此数字增加 1
  • 创建一个新的公式数组以保存到A2:B2
  • 设置公式。

参考:


推荐阅读