【问题标题】:Checkboxes on a dynamically generated sheet动态生成的工作表上的复选框
【发布时间】:2019-06-18 21:49:13
【问题描述】:

我正在构建一个包含 20 个不同漏水传感器的电子表格,这些传感器每天都会更新每小时的数据。其中一张是对每个传感器数据进行的各种分析的每日概览。

在动态生成的“每日概览”中,我想在每一行的末尾放置三个复选框,以便点击:

  1. 如果调用了管道工
  2. 如果发现泄漏
  3. 如果泄漏已修复

(在“每日概览”中,A1 是今天的日期,所有数据都是通过VLOOKUP 收集的。因此,如果日期更改,I2 处的复选框应该会消失,但如果 I再次更改 A1 日期。)

在每个传感器页面中,每天的数据末尾还有三个复选框,分别位于AFAGAH 列中。

我正在寻找一种公式化的方式来单击“每日概览”中的一个框,以在传感器页面上的正确框中进行更改。

实际上,我想要与此相反:=VLOOKUP(A1,'32033'!A2:AE,32) 在复选框区域中将此数据放在另一张纸上。

https://docs.google.com/spreadsheets/d/1h1JB_Z5dEXUAoCxJlbIjuu3mkcK4CwCotYSZzIYx2Y0/edit?usp=sharing

【问题讨论】:

  • 您需要一个脚本来处理对概览的编辑

标签: google-apps-script google-sheets match google-sheets-formula array-formulas


【解决方案1】:

应该是这样的(在32033 表中):

=ARRAYFORMULA(IF(ROW(A2:A)=MATCH('Daily Overview'!A1, A1:A, 0), 
 INDIRECT("Daily Overview!I"&MATCH("32033", 'Daily Overview'!A1:A, 0)&
                     ":"&"K"&MATCH("32033", 'Daily Overview'!A1:A, 0))))


也可以通过添加这个脚本:

function sheetName() {
  return SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getName();
}

你可以这样做:

=ARRAYFORMULA(IF(ROW(A2:A)=MATCH('Daily Overview'!A1, A1:A, 0), 
 INDIRECT("Daily Overview!I"&MATCH(sheetName(), 'Daily Overview'!A1:A, 0)&
                     ":"&"K"&MATCH(sheetName(), 'Daily Overview'!A1:A, 0))))

注意:公式将输出 TRUE / FALSE 状态,因此选择 AF2:AH 并将其转换为复选框(插入 > 复选框)

【讨论】:

  • 谢谢,但这实际上并没有将其存储在32033 表上。如果您更改 Daily Overview 上的日期,它不会重置复选框,而是会更改 32033 工作表上的值。也许我必须以编程方式执行此操作。
  • @EzraButler 好吧,当然,它不会存储它。公式不能存储值。为此,您将需要一个脚本解决方案 - 这是存储值的唯一方法。
  • 这就是我将它与=VLOOKUP(A1,'32033'!A2:AE,32) 之类的东西进行比较的原因。因为当A1 更改时,它会根据数据表更改所有单元格。我希望Daily Overview32033 中提取数据,但我也希望它成为用户更新数据的地方。这有意义吗?
猜你喜欢
  • 2015-06-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多