【问题标题】:Filter 11 Values with a Specific Search使用特定搜索过滤 11 个值
【发布时间】:2019-12-15 15:58:25
【问题描述】:

我想将拥有球队的球员分开。为了找到这 11 名球员,他们从一名拥有 (GK) 的运动员开始,并且在连续另外 10 名球员之后,总会有另一名以 (GK) 开始的运动员。就像我将处理多支球队一样,我想自动执行此过滤器,因为每支球队都有不同数量的球员,但在某些位置之间都有 10 名球员(GK)。这些是持有者..

用我测试的这个公式,它失败了,因为它从第一个(GK)过滤到最后一个(GK)

我如何才能调整为仅当一个 (GK) 之后有 10 个玩家并且在第十个玩家之后会有另一个 (GK) 时才进行过滤?

=TRANSPOSE(SPLIT(REGEXEXTRACT(TEXTJOIN("♦️", 1,TRANSPOSE(SPLIT(REGEXEXTRACT(TEXTJOIN("♦️", 1,TRANSPOSE(SPLIT(REGEXEXTRACT(TEXTJOIN("♦️", 1,A2:A), "GK(.*)"), "♦️"))), "(.*)GK"), "♦️"))), "GK(.*)"), "♦️"))

我正在尝试做的这种格式的问题是,它只有在我真正想要获得的 11 之前的 (GK) 名称时才有效。如果不是,它会产生错误。而且我也不能添加 Lineup 11 的第一个(GK)。

我想要的正确表格在下图 (Column LINEUP (11 Players)) 和电子表格中:
https://docs.google.com/spreadsheets/d/1jnirW5Wkfcj4eSzM9In0_ChxRFl_KtBjgfnp1Qdi2ZY/edit?usp=sharing

【问题讨论】:

  • @player0 完成队友

标签: google-sheets google-sheets-formula


【解决方案1】:

第一个例子

=offset(indirect("A"&arrayformula(vlookup(11,{filter(row(A2:A26),find("(GK)",A2:A26))-{0;array_constrain(filter(row(A2:A26),find("(GK)",A2:A26)),count(filter(row(A2:A26),find("(GK)",A2:A26)))-1,1)},filter(row(A2:A26),find("(GK)",A2:A26))},2,false))),-11,0,11,1)

第二个例子

=offset(indirect("G"&arrayformula(vlookup(11,{filter(row(G2:G26),find("(GK)",G2:G26))-{0;array_constrain(filter(row(G2:G26),find("(GK)",G2:G26)),count(filter(row(G2:G26),find("(GK)",G2:G26)))-1,1)},filter(row(G2:G26),find("(GK)",G2:G26))},2,false))),-11,0,11,1)

【讨论】:

  • CodeCamper 它工作得很好,这正是我所需要的,所有字符串大小的公式都相同。非常感谢!
【解决方案2】:

试试这个:

=indirect(query(arrayformula( if(  if(REGEXMATCH(G2:G,".(GK)"),row(G2:G),0)-if(REGEXMATCH(G13:G,".(GK)"),row(G13:G),0)=-11, "G" & row(G2:G) & ":H" & row(G12:G),  )), "Select max(Col1) label max(Col1) ''"))

为了更灵活,可以复制:

=indirect(query(arrayformula( if(  if(REGEXMATCH(G3:G,".(GK)"),row(G3:G),0) -
                               if(REGEXMATCH(G14:G,".(GK)"),row(G14:G),0)=-11, 
                                     REGEXEXTRACT(address(row(G1),COLUMN(G1)), "[A-Z]+") & row(G3:G) & ":" 
                                     & REGEXEXTRACT(address(row(H1),COLUMN(H1)), "[A-Z]+") & row(G13:G),  )), 
      "Select max(Col1) label max(Col1) ''"))

【讨论】:

  • user11982798 非常感谢,但不幸的是,这种格式仅适用于此列表。由于我会从几个不同人数的球队导入数据,这种方式最终会出错。我正在努力获得一个适用于所有球队的通用形式,无论球队有多少球员。当在一个 (GK) 和另一个 (GK) 之间找到 10 个玩家时,这将是正确的过滤器。
  • 对于另一个列表,您必须根据您的公式更改 A 和 B(作为列)获取
  • 我在图片下添加了修改后的公式,这样会更灵活,而且可以很好的复制
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-03
  • 2022-08-13
  • 2019-12-04
  • 1970-01-01
  • 2016-11-18
  • 2022-01-13
相关资源
最近更新 更多