如何根据Excel或Google工作表中列上的值提取行信息?

如何根据Excel或Google工作表中列上的值提取行信息?,excel,vba,google-sheets,Excel,Vba,Google Sheets,我正在为我正在做的一个项目建立一个excel电子表格,我遇到了一个传递数据的问题 如果我有这样的数据: NameInfo1Info2条件1条件2 foo139X foo2810X foo327XX 我有一个公式,根据某些条件,生成一个“条件”标志。然后我想在另一张纸上开发一种方法,从这个数据集中提取包含“条件”的所有行 示例:单元格生成条件1,显示列“条件1”中具有“X”的所有行和值 我知道我可以使用过滤器,但这不是面向定制的数据。如果过滤器是唯一的方法,是否有一个脚本可以根据单元格的值自动过滤

我正在为我正在做的一个项目建立一个excel电子表格,我遇到了一个传递数据的问题

如果我有这样的数据:
NameInfo1Info2条件1条件2
foo139X
foo2810X
foo327XX

我有一个公式,根据某些条件,生成一个“条件”标志。然后我想在另一张纸上开发一种方法,从这个数据集中提取包含“条件”的所有行

示例:单元格生成条件1,显示列“条件1”中具有“X”的所有行和值

我知道我可以使用过滤器,但这不是面向定制的数据。如果过滤器是唯一的方法,是否有一个脚本可以根据单元格的值自动过滤,这样用户就看不到其他数据(除非他们手动编辑过滤器)


我试过VLOOKUP和HLOOKUP的组合,也试过INDEX和MATCH。我遇到的问题是,如果我有40个符合条件1的项目,然后第二天它自动切换到条件2,并且有10个项目,我发现编写脚本来生成所有这些项目很困难。

如果您使用的是Google Sheets或Excel 365,那么您可以使用
FILTER()
。如果您的Excel版本支持
AGGREGATE()
函数,则可以使用它。如果您使用的是Jurassic版本的Excel,则可以使用
MATCH()
检索所需的数据。假设我们有:

我们想要cond1有x的记录。即第2、4、7、11、13、17和19行

G1中输入:

=MATCH("x",D:D,0)
=IFERROR(MATCH("x",INDEX(D:D,G1+1):INDEX(D:D,9999),0)+G1,"")
在G2中输入:

=MATCH("x",D:D,0)
=IFERROR(MATCH("x",INDEX(D:D,G1+1):INDEX(D:D,9999),0)+G1,"")
然后向下复制。每个
MATCH()
公式检查一个单独的D列块:


G1中的
MATCH()
公式从D列的顶部开始,而G2中的
MATCH()
公式从G1中找到的匹配项下方的一个单元格开始,以此类推。一旦我们有了行号,
INDEX()
可用于检索该行的任何信息。

VBA和Google Apps脚本是非常不同的方法-因此,如果要编写脚本,请在Excel或工作表(但不是两者)中进行选择。也就是说,也许
FILTER
在这里会有用。现在我在谷歌应用程序中写这篇文章主要是为了方便与他人共享文件,但如果只能在Excel中完成,我可以交叉输入到目前为止没有问题的数据。FILTER开始做我想做的事情了!非常感谢。