当前,当我将新数据表导入模板工作表时,我必须不断单击具有=query()
公式的单个单元格,以刷新单元格的公式。
这应该是如何工作的,用户每次都制作一份模板表的副本,并导入一个新的数据表;报告概述";选项卡。
代替用CCD_ 2点击到单个细胞中;激活"/"刷新";这些单元格中的公式,是否有一个可以与自定义菜单一起使用的脚本,这样用户只需点击菜单按钮,就可以将A2和B2这样的特定单元格"设置为";刷新";总共
模板(谷歌表单(-https://docs.google.com/spreadsheets/d/11JZMo-cgTCTPx9U6SYwDX7L26kpsQ5YDQH-IuW_3TY8
数据表(.xlsx/.xls(-https://docs.google.com/spreadsheets/d/1IprKWqX1OolT1k6x3OClFjMOHd1LIpsc
没有任何脚本。。。
- 在A1中添加一个选项卡和一个复选框
- B2
=iferror(QUERY(indirect("Pets!A2:D11"),"SELECT A WHERE B>5"),refresh!$A$1)
- 在C2
=iferror(QUERY(indirect("Pets!A2:D11"),"SELECT C WHERE D>5"),refresh!$A$1)
中
要激活所有公式,请选中/取消选中A1*中的框
你也可以通过一个简单的脚本来做到这一点
function refresh() {
var sh = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('refresh')
sh.getRange('A1').setValue(!sh.getRange('A1').getValue())
}
编辑:通过脚本的基本方法是清除单元格,然后通过脚本重新构建公式
将其添加为脚本:
function onOpen() {
SpreadsheetApp.getUi().createMenu("Refresh Formulae").addItem("Refresh", "refresh").addToUi()
}
function refresh() {
const ss = SpreadsheetApp.getActiveSpreadsheet()
const sheet = ss.getSheetByName("report overview")
const range = sheet.getRange("A2:B2")
range.setFormulas(range.getFormulas())
}
Rundown:
- 打开时,创建一个菜单项以刷新公式
- 一旦获得授权并运行,将重新设置A2和B2中的公式
参考文献:
getFormulas()
setFormulas()