Google sheets 谷歌电子表格:如何从范围中获取第一(n)行/列?(内置功能)

Google sheets 谷歌电子表格:如何从范围中获取第一(n)行/列?(内置功能),google-sheets,Google Sheets,假设我有这个命名范围,而不是A1 idz01 idz04 ida02 foo a 1 b bar c 3 8 baz 8 2 g 现在我怎么才能拿到第一排?第N排呢?第n列是怎样的?作为一个范围,使用内置函数 编辑:第N行:=偏移量(ObjednavkyData,N,0,1) 最后一行: =OFFSET(ObjednavkyData, MAX(ARRAYFORMULA(ROW(Obje

假设我有这个命名范围,而不是A1

      idz01  idz04  ida02
foo     a      1      b
bar     c      3      8
baz     8      2      g
现在我怎么才能拿到第一排?第N排呢?第n列是怎样的?作为一个范围,使用内置函数

编辑:第N行:
=偏移量(ObjednavkyData,N,0,1)
最后一行:

=OFFSET(ObjednavkyData, 
    MAX(ARRAYFORMULA(ROW(ObjednavkyData)))-ROW(ObjednavkyData), 0, 1
 )
部分答案:(仍对更好的答案持开放态度)

第一排

OFFSET(Data, 0 , 0, 1)
第一栏:

您只需调用该范围内的一些函数,它们位于第1列。
或者,如果需要:

OFFSET(Data, 0, 0, MAX(ARRAYFORMULA(ROW(Data))), 1)
第n行:
这里的关键是
OFFSET()
只填充右侧和下方。所以你只需要通过它的参数来裁剪这些方向

OFFSET(Data, N, 0, 1);
也可以通过将第一行输入到
ARRAYFORMULA()
来实现,对于每一列(单元格),使用
INDEX(column(),row()+N)
获取最后一行的单元格

第n列:

与上面类似,只需要获得行数

OFFSET(Data, 0, N, ROWS(Data), 1);
我在玩
TRANSPOSE()
,但似乎
OFFSET()
不能很好地消化它。

第一行:

=INDIRECT(COLUMN(data)&":"&COLUMN(data))
第一栏:

=INDIRECT(CHAR(64+COLUMN(data))&":"&CHAR(64+COLUMN(data)))
第N排:

=INDIRECT(COLUMN(data)+N&":"&COLUMN(data)+N)
第N栏:

=INDIRECT(CHAR(64+COLUMN(data)+N)&":"&CHAR(64+COLUMN(data)+N))
用数据范围替换数据,用数据中所需的行/列替换N。行/列从0开始计数。您可以改为使用N-1更改购买

如果想要得到实际范围(A:A,1:1,A3:A3)而不是值,只需去掉这些公式中的间接


希望这有帮助

只需使用
索引
功能:

=INDEX(NamedRange1,NRow,NColumn)
如果需要最后一行和最后一列,可以使用:

=INDEX(NamedRange1,ROWS(NamedRange1),COLUMNS(NamedRange1))
  • 索引
    比可变的
    偏移
    间接
    更有效
示例:

=INDEX(ObjednavkyData,3,2) //This will return "c".
=INDEX(ObjednavkyData,ROWS(ObjednavkyData),COLUMNS(ObjednavkyData2)) //This will return "g".
添加:

如果要获取整行,可以省略
索引
函数的
部分。如果需要整列,请省略
部分(将
0
放入
字段)


我想提出另一种方法,这种方法也适用于不稳定的未命名范围(例如,来自其他函数的输出,而不仅仅是电子表格上存在的范围)。总体思路是使用FILTER()作为提取机制,并构造真/假值向量作为要提取的行的指示器。例如,如果源范围是A1:D13,我想提取第7行,我会写

=filter(
   A1:D13,
   {transpose(split(rept("0 ", 6), " "));
    1;
    transpose(split(rept("0 ", rows(A1:D13)-7), " "))
   }
  )
如您所见,从任意位置提取任意数量的行也很容易。一般来说,构造如下公式:

=filter(
   <data>,
   {transpose(split(rept("0 ", <number rows to skip from the start>), " "));
    transpose(split(rept("1 ", <number of rows to extract>), " "));
    transpose(split(rept("0 ", <number of rows to skip until the end), " "))
   }
  )
=过滤器(
,
{transpose(split(rept('0',),');
转置(分裂(报告(“1”),”);

转置(split)(rept(“0”),你是想把第一列和第一行作为一个范围来使用我给出的公式吗?我相信他是想把整列/行,而不仅仅是一个单元格。他想把它们与发布的索引一起使用,我需要整行或整列。我可能可以用
index()解决另一个问题中的任务
MATCH()
。但为此,我仍然需要以某种方式获取第一行,以便通过查找进行搜索。如果省略索引函数的[column]部分,您将获得整行。我将把它添加到答案中。
=filter(
   <data>,
   {transpose(split(rept("0 ", <number rows to skip from the start>), " "));
    transpose(split(rept("1 ", <number of rows to extract>), " "));
    transpose(split(rept("0 ", <number of rows to skip until the end), " "))
   }
  )