【问题标题】:Get row number in filtered results获取过滤结果中的行号
【发布时间】:2021-05-12 01:51:47
【问题描述】:

当我过滤行后,我正在努力获取行号。

过滤后如何获取行“编号”?

目前不工作:

当前行行上升时有效。 (例如:1-10)。

目前在做:

  var holder = [];
      for(var x = 0; x < object.length; x++) {
        var data = object[x];
        if (data[0] != '') {
         var id = x + 1;
        holder.push(use_id_to_something(data,id));
        }
    }

编辑:包含整个工作表的对象

object = SS.getRange("A1:R").getValues();

【问题讨论】:

  • 您能否提供更多关于您的代码中的 object 是什么的详细信息?因为getValues 会返回指定范围内的所有值,而不管过滤器如何。例如,sheet.getRange('A1:A18').getValues() 将返回 所有 范围内的值 A1:A18 无论您是否有过滤器。
  • 已更新。它是用你描述的公式。我怎样才能让它只检查过滤?并获取他们的行 ID?
  • 请查看此问题的已接受答案:How to copy filtered spreadsheet data with Apps Script
  • 并实际检查这个答案,也许这更相关:How to auto select range from a filter without having to manually enter it?
  • 你想要的输出是什么?要在工作表显示其过滤版本时获取过滤行的 ID?

标签: google-apps-script google-sheets google-sheets-api


【解决方案1】:

试试这个:

function f101() {
  const ss=SpreadsheetApp.getActive();
  const sh=ss.getSheetByName('sheet name');
  const rg=sh.getRange(1,1,sh.getLastRow(),sh.getLastRow());
  const vs=rg.getValues();
  let holder=vs.map((r,i)=>{if(r[0]){return r;}});
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-15
    • 1970-01-01
    • 1970-01-01
    • 2014-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多