【问题标题】:Google Sheets Unmatch and Split resultsGoogle 表格不匹配和拆分结果
【发布时间】:2020-11-12 15:18:23
【问题描述】:

如何结合这两个公式:

一级方程式:

=FILTER(INDIRECT("RangedName1");ISERROR(MATCH(INDIRECT("RangedName1");FILTER(SORT(UNIQUE(flatten(C3:H14));1;1); SORT(UNIQUE(flatten(C3:H14));1;1)<>"");0)))

第一个公式从输入范围 C3:H14(本例中的列 A 到 F)中获取所有值以过滤重复项,然后将结果展平并排序到单个列中,然后从 RangeNamed1 中减去该展平范围因此结果是单列值中的一个范围,这些值未出现在范围 C3:H14 中。

 Confrontation range         RangedName1    Result
   A       B    .    F            G           H
------------------------------------------------------
Mango   Banana ... Apple      X Apple      Grapes
Banana  Carrot ... Orange     X Banana     Peach
                              X Carrot     .
                              X Orange     .
                                Peach      Watermelon
                              X Mango
                                Grapes
                                .
                                .
                                Watermelon

公式 2:

=ARRAYFORMULA(IFNA(VLOOKUP(TRANSPOSE(SEQUENCE(ROUNDUP(COUNTA(H3:H15)/4);4;ROW(H3:H15)));{ROW(H3:H15)\H3:H15};2;0)))

第二个公式将公式 1 的结果(在此示例中为 H 列)拆分为每 4 行多列。

所以

                         Split Range
    H           I       J    .    .      M  
-------------------------------------------------
Grapes       Grapes     .             .
Peach        Peach      .             .
.            .          .             .
.            .          .             Watermelon
.
.
.          
Watermelon  

当我尝试将公式 1 用于公式 2(替换 H3:H15)以将它们组合成一个公式时,它会给出 函数 ARRAY_ROW 参数 2 的行大小不匹配。预期:1. 错误。

如何将它们组合成一个公式?

只需要在拆分前按升序排序。

【问题讨论】:

  • 如果您共享一个(可编辑的)样本表,其中包含一些手动输入的“所需结果”,我可以向您展示如何以公式的方式进行操作。
  • 添加了演示表。

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


【解决方案1】:

或者试试这样:

=ARRAYFORMULA(TRANSPOSE(SPLIT(TRANSPOSE(TRIM(QUERY(QUERY(QUERY(
 {(ROUNDDOWN(SEQUENCE(COUNTUNIQUE(
 FILTER(M2:M; NOT(COUNTIF(FLATTEN(C2:H15); M2:M)))); 1; 0; 1)/A19))+1\QUERY(
 FILTER(M2:M; NOT(COUNTIF(FLATTEN(C2:H15); M2:M))); "where Col1 is not null")}; 
 "select max(Col2) group by Col2 pivot Col1"); "offset 1"; 0);; 9^9))); " ")))

【讨论】:

    【解决方案2】:

    我创建了一个名为 MK.Help 的新选项卡,并将此公式放入单元格 A19:

    =ARRAYFORMULA(IFERROR(HLOOKUP("X";{"X";QUERY({M2:M\ISNA(MATCH(M2:M;FLATTEN(C2:H15);0))};"select Col1 where Col2=TRUE and Col1<>'' order by Col1")};TRANSPOSE(SEQUENCE(ROUNDUP(SUM(ISNA(MATCH(M2:M;FLATTEN(C2:H15);0))*ISTEXT(M2:M))/4);4;2));0)))
    

    它使用了一种技巧,将字母 X “查找”到一个构造范围中,该范围由位于查询顶部的字母 X 组成,显示正确的名称。该 HLOOKUP 的 [index] 是一个由数字 4 定义的 SEQUENCE() 数组,您应该在公式中看到两次。更改 4 以更改结果的形状。

    【讨论】:

      【解决方案3】:

      将 J 列分配到黄色单元格中,每列 4 个,您可以使用:

      =ARRAYFORMULA(TRANSPOSE(SPLIT(TRANSPOSE(TRIM(QUERY(QUERY(QUERY(
       {(ROUNDDOWN(SEQUENCE(COUNTA(
       FILTER(INDIRECT("NamedRange1"); ISERROR(MATCH(INDIRECT("NamedRange1");
       FILTER(SORT(UNIQUE(FLATTEN(C2:H15)); 1; 1); 
       SORT(UNIQUE(FLATTEN(C2:H15)); 1; 1)<>""); 0)))); 1; 0; 1)/N1))+1\
       FILTER(INDIRECT("NamedRange1"); ISERROR(MATCH(INDIRECT("NamedRange1");
       FILTER(SORT(UNIQUE(FLATTEN(C2:H15)); 1; 1); 
       SORT(UNIQUE(FLATTEN(C2:H15)); 1; 1)<>""); 0)))}; 
       "select max(Col2) group by Col2 pivot Col1"); "offset 1"; 0);; 9^9))); " ")))
      

      注意 N1 是一个集合变量。可以轻松更改为您想要的任何网格分布,或者如果您愿意,可以直接硬编码为 4

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-07-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多