【问题标题】:How to get list of row that has value from a range of data based on column header as the criteria?如何以列标题为条件从一系列数据中获取具有值的行列表?
【发布时间】:2020-09-13 14:34:21
【问题描述】:

我在“数据”表中从谷歌表单中填充了一系列数据。 我需要根据姓名(从下拉列表中)显示学生出勤情况的报告(在“报告”表中)。该报告中排除了空白数据,如第 i 列至第 k 列所示

desired result

我已经分享了@98​​7654322@

我尝试过使用过滤器 =filter(Data!B1:I20,Data!E1:E20"")

但我仍然无法找到更改此公式中的“条件”以引用工作表 Report A1 的方法。

实现这一目标的正确公式是什么?

感谢您的帮助。

【问题讨论】:

  • 您共享的文件已被锁定,如果您希望我们帮助您,请删除其中的所有类型的授权。无论如何,我认为使用 数据透视表 你可以实现你想要做的事情
  • 哦,对不起,我忘记打开分享了..它现在打开了..谢谢
  • 不太清楚您要达到的目标。你想要学生在场的每一天的每个科目的总和吗? (因此数据表中的字段为空白)?
  • 所需的报告显示在表格报告中的 i 列到 k 列中..
  • 我曾尝试使用 filter =filter(Data!B1:I20,Data!E1:E20"") 但此函数中的“条件”必须取自下拉列表 A1 表报告.而且,结果应该只显示该学生的记录。

标签: google-sheets filtering google-sheets-formula reporting


【解决方案1】:

使用 Apps 脚本,您必须使用函数 getSheetByName(name)

例子:

// The code below logs the index of a sheet named "Expenses"
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Expenses");
if (sheet != null) {
  Logger.log(sheet.getIndex());
}

然后要从 E 列中查找具有值的行,您必须使用 getRange(a1Notation) 方法:

// Get a range A1:D4 on sheet titled "Invoices"
var ss = SpreadsheetApp.getActiveSpreadsheet();
var range = ss.getRange("Invoices!A1:D4");

// Get cell A1 on the first sheet
var sheet = ss.getSheets()[0];
var cell = sheet.getRange("A1");

然后你必须遍历那些行并获取 E 列有东西的行。

一旦你获得了Report表并使用setValues(values)在那里设置值

有关您可能需要如何使用该功能的更多信息,请参阅SpreadsheetAppExtending Google Sheets 上的概述

【讨论】:

    猜你喜欢
    • 2019-02-05
    • 1970-01-01
    • 2020-05-18
    • 2020-10-27
    • 2015-06-16
    • 2020-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多