通过自定义菜单使用脚本一键刷新单元格中的公式,而不是单独单击单元格以刷新单元格中的公式

Using script via custom menu to one-click refresh formulas in cells rather than clicking into cells individually to refresh formulas in cells

目前,当我将新数据sheet导入模板sheet时,我必须不断点击带有=query()公式的单个单元格来刷新单元格的公式。 14=]

这应该如何工作是用户每次都复制模板 sheet 并导入新数据sheet,其值将反映在单元格 A2 和 B2 中模板副本的“报告概览”选项卡。

不是单击带有 #REF! 的单个单元格以“激活”/“刷新”这些单元格中的公式,是否有可与自定义菜单一起使用的脚本,以便用户只需单击在菜单按钮上并让 A2 和 B2 等特定单元格一起“刷新”。

模板(Google 张)- https://docs.google.com/spreadsheets/d/11JZMo-cgTCTPx9U6SYwDX7L26kpsQ5YDQH-IuW_3TY8

数据sheet (.xlsx/.xls) - https://docs.google.com/spreadsheets/d/1IprKWqX1OolT1k6x3OClFjMOHd1LIpsc

没有任何脚本...

  • 在 A1 中添加标签和复选框
  • 在 B2 =iferror(QUERY(indirect("Pets!A2:D11"),"SELECT A WHERE B>5"),refresh!$A)
  • 在 C2 =iferror(QUERY(indirect("Pets!A2:D11"),"SELECT C WHERE D>5"),refresh!$A)

要激活所有公式,check/unchek A1 中的方框*

您也可以通过一个简单的脚本来做到这一点

function refresh() {
  var sh = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('refresh')
  sh.getRange('A1').setValue(!sh.getRange('A1').getValue())
}

编辑:脚本的基本方法是清除单元格,然后re-build通过脚本编写公式

将其添加为脚本:

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())
}

破败:

  • 打开时,创建一个菜单项来刷新公式
  • 授权后运行,这将re-setA2和B2中的公式

参考文献: