QUERY() 获取特定单元格下方的行
QUERY() to get rows below a certain cell
我正在从外部 API 下载 CSV 文件。它 returns 具有以下结构的 table:
foo
bar 1 4
baz 2 3
有什么方法可以使 QUERY(或其他函数?)获得 foo
单元格下方的前两行吗?
bar
和 baz
行还有其他几处出现,这就是为什么我只想要 foo
单元格下方的行。可行吗?
尝试:
=query(A2:C,"select * where A='bar' or A='baz' limit 2")
试试这个公式:
=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")
这里还有一个替代方案:使用 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))
基本上,如果您想查看原始数据,请删除正则表达式部分,只保留连接和导入数据 - 正则表达式部分有助于忽略开头部分,然后使用括号指定要捕获的部分。这些称为捕获组。从技术上讲,它们之外的任何内容都会被忽略。
我正在从外部 API 下载 CSV 文件。它 returns 具有以下结构的 table:
foo
bar 1 4
baz 2 3
有什么方法可以使 QUERY(或其他函数?)获得 foo
单元格下方的前两行吗?
bar
和 baz
行还有其他几处出现,这就是为什么我只想要 foo
单元格下方的行。可行吗?
尝试:
=query(A2:C,"select * where A='bar' or A='baz' limit 2")
试试这个公式:
=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")
这里还有一个替代方案:使用 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))
基本上,如果您想查看原始数据,请删除正则表达式部分,只保留连接和导入数据 - 正则表达式部分有助于忽略开头部分,然后使用括号指定要捕获的部分。这些称为捕获组。从技术上讲,它们之外的任何内容都会被忽略。