You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google Sheets中如何获取不含隐藏行的区域数据?

解决方案

公式方案(优先推荐)

使用AGGREGATE函数结合SUBTOTAL识别并提取可见行的第一个项目,公式如下:

=INDEX($A:$A, AGGREGATE(15, 6, ROW($A2:$A)/(SUBTOTAL(103, INDIRECT("A"&ROW($A2:$A)))>0), 1))

公式说明:

  • SUBTOTAL(103, INDIRECT("A"&ROW($A2:$A))):用忽略隐藏行的COUNTA逻辑(参数103)判断每行是否可见,可见行返回1,隐藏行返回0
  • ROW($A2:$A)/(...):仅保留可见行的行号,隐藏行因除数为0生成错误值
  • AGGREGATE(15, 6, ..., 1):使用SMALL逻辑(参数15),忽略错误值(参数6),取第一个最小的可见行号
  • INDEX($A:$A, ...):根据行号提取A列对应的项目名称

也可以用更直观的FILTER+INDEX组合:

=INDEX(FILTER($A2:$A, SUBTOTAL(103, OFFSET($A2, ROW($A2:$A)-ROW($A2), 0, 1))>0), 1)

App Scripts方案

如果公式无法满足复杂需求,可创建自定义函数:

function GET_FIRST_VISIBLE(range) {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  const dataRange = sheet.getRange(range);
  const values = dataRange.getValues();
  const startRow = dataRange.getRow();
  
  for (let i = 0; i < values.length; i++) {
    if (!sheet.isRowHiddenByFilter(startRow + i)) {
      return values[i][0];
    }
  }
  return "";
}

使用时在单元格输入=GET_FIRST_VISIBLE("A2:A"),即可返回第一个可见的项目名称。

内容的提问来源于stack exchange,提问作者dgarciagarcia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 12:27:07