excel - Google 表格 - 将 A1 更改为 A2 到 A3 的脚本,......在公式中
问题描述
我想在谷歌电子表格上做一些基本的事情,但我没有编码经验。我已经尝试搜索类似的脚本,但我不确定要查找什么。
我有 2 张纸:
•Questions
是一长串问题(A 列)和答案(B 列)。此表将在将来隐藏。
•Quiz
是问题及其答案(来自Questions
工作表)出现的地方。
我想要一个“下一步”按钮,它可以将当前的问题和答案更改为以下内容。在工作Quiz
表上,我有一个=Questions!A1
显示 question1 和=Questions!B1
answer1 的公式。
我已经知道如何将脚本分配给按钮,所以没关系。我需要的是一个脚本,每次单击时都会将公式从=Questions!A1
to更改为=Questions!A2
to等等。=Questions!A3
答案也一样:从=Questions!B1
到=Questions!B2
到=Questions!B3
等等。
解决方案
回答:
您可以通过增加公式的 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
- 设置公式。
参考:
推荐阅读
- javascript - 如何解决 Cordova Android 应用程序上远程视频帧抓取的污染画布?
- c# - 使用 APM BeginXX、EndXXX 方法时是否涉及两个线程?
- .net - 将 RavenDB 中的 LocalDate 反序列化为对象
- java - 组件怎么一直到左上角?
- python - 如何根据一列是否具有特定值来查找重复行并删除输出?
- json - 如何访问 API 的不同属性?
- c# - 解析在 Hyper-V 主机上创建的 VM 的 .vmcx 文件
- php - 如何从php执行shell命令?
- ruby - 使用 image_processing 将 --density 标志添加到 libvips 命令?
- javascript - 在反应中测试 onclick 组件