我正在从外部API下载CSV文件。它返回一个具有以下结构的表:
foo
bar 1 4
baz 2 3
有没有办法让QUERY(或其他一些函数?)获得foo
单元格下面的前两行?
还有其他几个bar
和baz
行,这就是为什么我只想要foo
单元格下面的那些。可行?
答案 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))
看起来像这样:
如果您想要倍加肯定:在基本面前添加每股收益:
=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))
基本上,如果要查看原始数据,请删除正则表达式部分,然后保留连接和importdata - 正则表达式部分有助于忽略开头部分,然后使用括号指定要捕获的部分。这些被称为捕获组。技术上除了它们之外的任何东西都会被忽略。
答案 1 :(得分:1)
试试这个公式:
=QUERY(FILTER(A1:C13,row(A1:C13)>MATCH("foo",A1:A13,0)),"select * limit 2")
要使用导入的数据而不是范围,请使用:
=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")