【问题标题】:Query function to get last row in Google Sheets查询函数以获取 Google 表格中的最后一行
【发布时间】:2019-08-18 00:17:19
【问题描述】:

我有一张每天更新数据的表格。

但是,最后一个整数通常在第 131 到 133 行之间结束。

如何运行查询函数以显示第 1 行 C 列中的最后一个整数?

我不能在 C1 上做一个简单的=A131,因为它可以在第二天在 A133 上。

图片:https://imgur.com/a/pravwxJ

【问题讨论】:

  • 你的问题很混乱。第 131 ~ 133 行的整数结尾是什么意思?您查询的确切目的是什么?第 1 行 C 列似乎很随机。据我了解,您想编写一个查询来查找每列中的最后一个元素,但我无法确定。您需要明确您的问题以获得答案。
  • "你想写一个查询来找到每一列中的最后一个元素"是的,这是正确的。
  • 啊,看来我误解了显示部分。是的,这很简单。我会发布一个答案。

标签: google-sheets google-sheets-formula google-sheets-query google-query-language


【解决方案1】:

粘贴到C1单元格:

=QUERY(A1:A, "offset "&COUNTA(A1:A)-1, 0)

【讨论】:

  • 我对 OPs 数据的解释不同。据我了解,A 列在前 130 多行中填充了整数(来自另一个来源?),此后,单元格包含文本和各种其他内容,可能包括日期但不包括整数。 OP 的目标(据我所知)是识别包含整数的最后一行。无论如何,OP 的“演示”数据包括您的答案未解决的文本和整数。
  • FWIW,直到今天我才意识到我之前误解了这个问题,并相应地编辑了我自己的答案。
【解决方案2】:

这是我原始代码的简化版本。

输出最后一个整数的值和行号,供用户参考。

代码处理日期、文本、伪值文本 (37*2) 和小数。


function so5754079102() {

  var ss = SpreadsheetApp.getActiveSpreadsheet()
  var sheetname = "Sheet1";
  var sheet = ss.getSheetByName(sheetname);
  var Avals = ss.getRange("A1:A").getValues();
  var Alast = Avals.filter(String).length;
  Logger.log("Last row = "+Alast);
  var data = sheet.getRange(1,1,Alast,1).getValues();
  for (var i = Alast-1;i>=0;i--){
    Logger.log("i = "+i+", data 1 ="+data[i][0]+", and parse data 1 = "+parseInt(data[i][0], 10));
    if (data[i][0] === parseInt(data[i][0], 10)){
      break; 
    }
  }
  sheet.getRange("D1").setValue(+(i+1));
  sheet.getRange("D2").setValue(data[i][0]);
}

截图

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-02
    • 1970-01-01
    • 1970-01-01
    • 2015-08-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多