【问题标题】:Google Sheets INDEX/MATCH with multiple results具有多个结果的 Google 表格索引/匹配
【发布时间】:2020-12-15 03:20:42
【问题描述】:

test spreadsheet

标签'Raw Data' 包含来自多个活动的“出勤表”的组合。学生在同一日期参加多项活动。

标签'Result' 列出所有唯一的学生和日期。

目标:'Result'!B3:D11 标记为 P 或 A,如果该学生在该日期的任何活动为 P。

例如: 12 月 5 日,Evan 在他的活动中被标记为 A、A 和 P - 所以他应该在那个日期被标记为 P。

如果这些是数字,我想我可以将 SMALL 或 LARGE 与 INDEX/MATCH 结合使用来计算结果...但我不确定如何使这个公式与 A 和 P 一起使用。

【问题讨论】:

  • 您是否尝试过提供的任何解决方案?对你有用吗?如果不是,我们可以尝试找出原因。如果是,请记住,根据site guidelines,当答案解决您的问题时,accept 它甚至是upvote 它,这样其他人也可以从中受益。

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


【解决方案1】:

由于在您的示例表中您不使用唯一学生的公式,我建议 - 在单元格中 F3- 您使用

=UNIQUE(FILTER($A$2:$A$33,B2:B33<>""))

我们现在可以将上述公式作为单元格G2中以下公式的一部分,以获得所需的结果

=ArrayFormula({B1;IF(COUNTIFS($A$2:$A,"="&UNIQUE(FILTER($A$2:$A,B2:B<>"")),B2:B,"=P")>0,"P","A")})

将上面的内容拖动到右侧的相邻单元格中,以获取其余列。

(请根据您的需要调整范围)

使用的功能:

【讨论】:

  • 当然可以将上述公式扩展并组合成一个,但结果将是一个相当不必要的复杂。 “小口更容易吞咽。”
【解决方案2】:

@Gabe,我已在您的示例电子表格中添加了一张工作表(“Erik 帮助”)。里面有三个公式。

在 A2 中:

=UNIQUE(FILTER('Raw Data'!A2:A,'Raw Data'!B2:B&lt;&gt;""))

这只是从“原始数据”生成学生的唯一姓名列表。

在B1:

=FILTER('Raw Data'!B1:1,ISNUMBER('Raw Data'!B1:1))

这会从“原始数据”的第一行生成所有日期的列表。

在 B2 中:

=ArrayFormula(IF(NOT(ISERROR(VLOOKUP(FILTER(FILTER(A2:A&amp;B1:1&amp;"P",A2:A&lt;&gt;""),ISNUMBER(B1:1)),FLATTEN(FILTER(FILTER('Raw Data'!A2:A&amp;'Raw Data'!B1:1&amp;INDIRECT("Raw Data!B2:"&amp;ROWS('Raw Data'!A:A)),'Raw Data'!A2:A&lt;&gt;""),ISNUMBER('Raw Data'!B1:1))),1,FALSE))),"P","A"))

至于这个较长的公式是如何工作的,虽然我通常会留下详细的解释,但老实说,我现在太累了,无法完成完整的 shebang。但我会解释基础知识。

您会注意到FILTER(FILTER(...)) 出现了两次。首先是确保让公式只关注每个工作表中实际有数据的单元格。这将有助于加快处理速度。

IF(NOT(ISERROR(VLOOKUP(...)))) 分解为“如果你能找到这个……做 X。”

我们正在寻找的是由结果 A2:A 中的每个名称与 B1:1 中的每个数据与 "P" 连接的每个可能组成的字符串;实际上(即在内存中),这些结果将在结果中使用此类连接填充 2D 网格(例如,网格中的 B2 将存储“Jon44170P”,C3 将存储“Barbara44171P”等)。

这些字符串中的每一个都将在 FLATTENed 虚拟列中进行 VLOOKUP 处理,该列由“原始数据”中的每个名称与“原始数据”中的每个数据与实际“P”连接或“原始数据”网格的其余部分中的“A”。

如果 VLOOKUP 成功(即IF(NOT(ISERROR(VLOOKUP(...))))),则在该日期为该名称找到一个“P”。如果未找到,则分配默认的“A”。

由于这些公式是自扩展的,因此您可以根据需要将数据添加到“原始数据”中,而无需将公式拖到任何地方。

我还添加了条件格式以在数据扩展或收缩时扩展或收缩背景填充颜色。

【讨论】:

    【解决方案3】:

    尝试:

    =ARRAYFORMULA(QUERY(REGEXREPLACE(SORTN(SORT(UNIQUE(SPLIT(FLATTEN(
     IF('Raw Data'!B2:D="",, 'Raw Data'!B1:D1&"♂"&TEXT('Raw Data'!B1:D1, "m/d")&
     "♀"&'Raw Data'!B1:D1&"♂"&'Raw Data'!A2:A&"♀"&'Raw Data'!B2:D)), "♀")), 3, 0, 2, 1), 
     9^9, 2, 2, 1), "(\d+♂)", ), 
     "select Col2,max(Col3)
      where not Col1 matches '#VALUE!' 
      group by Col2 
      pivot Col1"))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-05
      • 2017-09-07
      • 1970-01-01
      • 2013-12-20
      • 2015-02-15
      相关资源
      最近更新 更多