QUERY()获取某个单元格下方的行

时间:2016-02-22 07:59:43

标签: google-sheets formulas

我正在从外部API下载CSV文件。它返回一个具有以下结构的表:

foo
bar    1    4
baz    2    3

有没有办法让QUERY(或其他一些函数?)获得foo单元格下面的前两行?

还有其他几个barbaz行,这就是为什么我只想要foo单元格下面的那些。可行?

3 个答案:

答案 0 :(得分:3)

这里还有一个选择:使用regexextract和concatenate,使用额外的rept函数来获取每个值,假装url在A1中:

=regexextract(concatenate(IMPORTDATA(A1)),"(Basic)"&rept("(\d\.\d{1,3})",6))

=regexextract(concatenate(IMPORTDATA(A1)),"(Diluted)"&rept("(\d\.\d{1,3})",6))

看起来像这样:

enter image description here

如果您想要倍加肯定:在基本面前添加每股收益:

=regexextract(concatenate(IMPORTDATA(A1)),"Earnings per share(Basic)"&rept("(\d\.\d{1,3})",6))

=regexextract(concatenate(IMPORTDATA(A1)),"Earnings per shareBasic.*(Diluted)"&rept("(\d\.\d{1,3})",6))

将输出全部放在一行上,一个接着一个:

=regexextract(concatenate(IMPORTDATA(A1)),"Earnings per share(Basic)"&rept("(\d\.\d{1,3})",6)&"(Diluted)"&rept("(\d\.\d{1,3})",6))

enter image description here

基本上,如果要查看原始数据,请删除正则表达式部分,然后保留连接和importdata - 正则表达式部分有助于忽略开头部分,然后使用括号指定要捕获的部分。这些被称为捕获组。技术上除了它们之外的任何东西都会被忽略。

答案 1 :(得分:1)

试试这个公式:

=QUERY(FILTER(A1:C13,row(A1:C13)>MATCH("foo",A1:A13,0)),"select * limit 2")

example workbook Sample

要使用导入的数据而不是范围,请使用:

=QUERY(FILTER(Data,row(Data)>MATCH("foo",query(Data,"select Col1"),0)),"select * limit 2")

答案 2 :(得分:0)

尝试:

=query(A2:C,"select * where A='bar' or A='baz' limit 2")