【问题标题】:Find multiple matches in a dataset, and return all matches in a single row在数据集中查找多个匹配项,并在一行中返回所有匹配项
【发布时间】:2021-09-30 23:50:19
【问题描述】:

什么数组公式可以解决这个问题?

测试表: Open

当前数据结构

  • 包含一个正在运行的姓名列表,以及他们何时开始、结束培训。
|   A   |     B      |     C    |
| John  | StartDate1 | EndDate1 |
| Adam  | StartDate3 | EndDate3 |
| John  | StartDate2 | EndDate2 |
| Ted   | StartDate5 | EndDate5 |
| Adam  | StartDate4 | EndDate4 |

预期结果

  • E 列中名称的唯一列=UNIQUE(A2:A)
  • 在唯一名称旁边,显示与唯一名称匹配的每个 StartDate 和 EndDate。
|   E   |     F      |     G    |     H      |     I    |
| John  | StartDate1 | EndDate1 | StartDate2 | EndDate2 |
| Adam  | StartDate3 | EndDate3 | StartDate4 | EndDate4 |
| Ted   | StartDate4 | EndDate4 |            |          |

我的尝试

=FILTER(B2:C,A2:A = E2)

  • 不返回单行。 ❌
  • 不适用于 ARRAYFORMULA。 ❌

=TRANSPOSE(FILTER(B2:C,A2:A = E2:E))

  • 返回单行上的所有开始日期,下一行返回所有结束日期。 ❌
    • 它应该返回一行(StartDate、EndDate、StartDate、EndDate 等)
  • 不适用于 ARRAYFORMULA。 ❌

=ARRAYFORMULA(VLOOKUP(E2:E,A2:C,{2,3}))

  • 仅返回第一个匹配项❌
  • 适用于数组公式。 ✔️

我做错了什么?有没有更好的数组公式可以连续显示匹配唯一名称的每个开始和结束日期?

感谢您的帮助!

【问题讨论】:

    标签: google-sheets google-sheets-formula array-formulas


    【解决方案1】:

    使用:

    =INDEX(SPLIT(FLATTEN(QUERY(QUERY(IF(A3:A="",,{A3:A, "×"&B3:B&"×"&C3:C}), 
     "select max(Col2) where Col2 is not null group by Col2 pivot Col1"),,9^9)), "×"))
    

    【讨论】:

    • 太棒了!谢谢玩家0!这完全符合需要。
    猜你喜欢
    • 2020-08-07
    • 1970-01-01
    • 1970-01-01
    • 2016-12-24
    • 2022-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多