【问题标题】:How would I extract row information based on a value on a column in Excel or Google Sheets?如何根据 Excel 或 Google 表格中的列上的值提取行信息?
【发布时间】:2020-05-03 23:51:26
【问题描述】:

我正在为我正在处理的项目构建一个 Excel 电子表格,但在转发数据时遇到了问题。

如果我有这样的数据:
姓名 Info1 Info2 Condition1 Condition2
foo1      3        9        X
foo2      8       10                              X
foo3      2        7        X                     X

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

示例:单元格生成Condition1,在“Condition1”列中显示所有带有“X”的行和值。

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

我尝试过 VLOOKUP 和 HLOOKUP 组合以及 INDEX 并涉足 MATCH。我遇到的问题是,如果我有 40 个与 Condition1 匹配的项目,然后第二天它会自动切换到 Condition2 并且它有 10 个项目,那么我很难编写脚本来生成所有这些项目。

【问题讨论】:

  • VBA 和 Google Apps 脚本是非常不同的方法 - 因此,如果您要编写脚本,请在 Excel 或表格之间进行选择(但不能同时使用两者)。
  • 也就是说,FILTER 可能在这里有用。
  • 现在我在 Google Apps 中编写此文件主要是为了方便与他人共享文件,但如果只能在 Excel 中完成,我可以交叉输入我目前拥有的数据而没有问题。
  • 过滤器开始做我想做的事了!谢谢!

标签: excel vba google-sheets


【解决方案1】:

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

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

在G1中输入:

=MATCH("x",D:D,0)

在G2中输入:

=IFERROR(MATCH("x",INDEX(D:D,G1+1):INDEX(D:D,9999),0)+G1,"")

并向下复制。每个MATCH() 公式检查一个单独的列D:

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

【讨论】:

    猜你喜欢
    • 2022-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-20
    • 1970-01-01
    相关资源
    最近更新 更多