Google sheets 谷歌电子表格:如何从范围中获取第一(n)行/列?(内置功能)
假设我有这个命名范围,而不是A1Google 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
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), " "))
}
)