【问题标题】:Filtering Columns According to Two Value Thresholds根据两个值阈值过滤列
【发布时间】:2021-10-17 12:58:01
【问题描述】:

如果我最多只能有 2 个Lateral 和最多 3 个Zagueiro,并且它们不能重复第 3 列中的值,我该怎么办?

我已经尝试将QUERY 与多个"Limit" 一起使用,并且已经尝试使用FILTER(ISNA(MATCH())),但在这两个选项中都找不到所需的答案。

注意:LateralZagueiro 之间不能有偏好,值的顺序是规则,越高,越重要。

注意2:可能会发现少于2个Lateral或少于3个Zagueiro

示例数据:

Filipe Luís            Lateral          Flamengo
Willian Arão           Zagueiro         Flamengo
Aderlan                Lateral          Bragantino
Mariano                Lateral          Atlético-MG
Nathan Silva           Zagueiro         Atlético-MG
Tinga                  Lateral          Fortaleza
Marcelo Benevenuto     Zagueiro         Fortaleza
Fabrício Bruno         Zagueiro         Vasco
Joaquim                Lateral          Vasco

示例预期结果:

Filipe Luís            Lateral          Flamengo
Aderlan                Lateral          Bragantino
Nathan Silva           Zagueiro         Atlético-MG
Marcelo Benevenuto     Zagueiro         Fortaleza
Fabrício Bruno         Zagueiro         Vasco

注意 3:Column 2 中的值完全分开是一个巧合,Zagueiro 可能在 Lateral 之上,在两个 Lateral 之间等等。没有特定的顺序,一切按照数据的原始顺序进行。

注意 4:Column 2 将只有提到的两个值,不会有其他值。

电子表格链接:

https://docs.google.com/spreadsheets/d/1JmX7V2zAYh-O0POOc0BpRp9ejcgLFRtsGZwlruRgHdY/edit?usp=sharing

【问题讨论】:

  • 请分享一个指向包含您帖子中显示的示例数据的示例电子表格的链接,确保最初(创建链接时)将权限设置为“知道链接的任何人...”和“编辑。”这将是创建、测试和与您共享解决方案的最有效和最高效的方式(这将是一个复杂的解决方案)。还请说明第二列是否仅包含“Lateral”或“Zagueiro”,或者除这两个之外是否还会出现其他值。

标签: arrays regex google-sheets filter countif


【解决方案1】:

我在 E1 中添加了一个带有以下公式的新工作表(“Erik 帮助”):

=ArrayFormula({VLOOKUP(ARRAY_CONSTRAIN(UNIQUE(FILTER(B1:B&C1:C,B1:B=B1)),2,1),{B1:B&C1:C,A1:C},{2,3,4},FALSE);VLOOKUP(ARRAY_CONSTRAIN(UNIQUE(FILTER(B1:B&C1:C,B1:B<>B1,ISERROR(VLOOKUP(C1:C,QUERY(VLOOKUP(ARRAY_CONSTRAIN(UNIQUE(FILTER(B1:B&C1:C,B1:B=B1)),2,1),{B1:B&C1:C,C1:C},2,FALSE),"Select *"),1,FALSE)))),3,1),{B1:B&C1:C,A1:C},{2,3,4},FALSE)})

【讨论】:

    【解决方案2】:

    尝试:

    ={ARRAY_CONSTRAIN(UNIQUE(FILTER(A1:C, B1:B="Lateral")), 2, 3);
     ARRAY_CONSTRAIN(FILTER(A1:C, B1:B="Zagueiro", REGEXMATCH(C1:C, 
     TEXTJOIN("|", 1, FILTER(FILTER(C1:C, B1:B="Zagueiro"), 
     NOT(COUNTIFS(ARRAY_CONSTRAIN(UNIQUE(FILTER(C1:C, B1:B="Lateral")), 2, 3), 
     FILTER(C1:C, B1:B="Zagueiro"))))))), 3, 3)}
    

    【讨论】:

    • 你好朋友,我用其他数据做了测试,但他们最终重复了第三列的值,防止这种情况发生的最好方法是什么?为了便于查看,我将新示例留在了电子表格中,提前致谢!
    • @BrondbyIF 可能是这样的:i.stack.imgur.com/0ZcRx.png 但您应该注意,有多种解决方案,并且公式只能采用一种可能是或可能不是您期望的路线(尤其是当数据集较小时) )
    • 我将分析并可能单独使用 VLOOKUP,结合 B&C 来限制值,然后使用您指出的第一个公式,我认为它也可以解决这种问题,而不会过多地推动公式的路径。非常感谢您所做的一切!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多