【问题标题】:Fetch the unique rows from the tabs using sheets/excel formula使用工作表/excel公式从选项卡中获取唯一行
【发布时间】:2020-09-19 12:19:26
【问题描述】:

我需要根据选项卡的工作表名称(蓝色)动态构建索引表。

预期结果以黄色显示。

行必须是唯一的,并且第一列中显示的工作表名称。

I tried in this sheet

非公式公式在这里:=INDIRECT(CONCATENATE("{",TEXTJOIN(";",true,ARRAYFORMULA("'" &A6:A32 &"'!" & "A2:B")),"}"))

【问题讨论】:

    标签: excel google-sheets excel-formula google-sheets-formula


    【解决方案1】:

    公式解决方案无法用于多张工作表 + indirect

    解决此问题的一种方法是使用另一个公式构建公式的动态部分。

    这就是我的意思:

    公式的动态部分是用这个公式构造的:

    ={"Dynamic part of the formula" ; JOIN(";"&char(10),FILTER("QUERY({"&A2:A&"!A2:C},""select '"&A2:A&"', Col1, Col2, Col3 where Col1 != '' label '"&A2:A&"' ''"")",A2:A<>"")) }
    

    假设 A 列仅用于工作表名称。它产生如下结果:

    Dynamic part of the formula
    QUERY({Sheet1!A2:C},"select 'Sheet1', Col1, Col2, Col3 where Col1 != '' label 'Sheet1' ''");
    QUERY({Sheet2!A2:C},"select 'Sheet2', Col1, Col2, Col3 where Col1 != '' label 'Sheet2' ''");
    QUERY({Sheet3!A2:C},"select 'Sheet3', Col1, Col2, Col3 where Col1 != '' label 'Sheet3' ''");
    QUERY({Sheet4!A2:C},"select 'Sheet4', Col1, Col2, Col3 where Col1 != '' label 'Sheet4' ''")
    

    最终公式使用这部分。您需要手动执行下一步或为此编写一个简短的脚本。手动流程:

    转到包含公式生成部分的单元格。按[F2]进入,全选复制。转到最终公式并替换这部分:

    ={"Sheetname","sub_category","category_filter"; QUERY(UNIQUE({
    
    QUERY({Sheet1!A2:C},"select 'Sheet1', Col1, Col2, Col3 where Col1 != '' label 'Sheet1' ''");
    QUERY({Sheet2!A2:C},"select 'Sheet2', Col1, Col2, Col3 where Col1 != '' label 'Sheet2' ''");
    QUERY({Sheet3!A2:C},"select 'Sheet3', Col1, Col2, Col3 where Col1 != '' label 'Sheet3' ''");
    QUERY({Sheet4!A2:C},"select 'Sheet4', Col1, Col2, Col3 where Col1 != '' label 'Sheet4' ''")
    
    }),"select Col1, Col2, Col3") }
    

    【讨论】:

    • 伟大的解决方案 Max!我真的试图达到同样的效果,但我做不到 :) 我对此投了赞成票。
    【解决方案2】:

    我确信必须有一个更优雅的公式来实现所需的输出。

    但是,这很好用:

    =query(UNIQUE({"Sheetname","sub_category","category_filter","duplicate";{ARRAYFORMULA("Sheet1"&T(SEQUENCE(COUNTA(Sheet1!A2:A))));ARRAYFORMULA("Sheet2"&T(SEQUENCE(COUNTA(Sheet2!A2:A))));
    ARRAYFORMULA("Sheet3"&T(SEQUENCE(COUNTA(Sheet3!A2:A))))},{INDIRECT("Sheet1!A2:C"&COUNTA(Sheet1!A1:A));
    INDIRECT("Sheet2!A2:C"&COUNTA(Sheet2!A1:A));INDIRECT("Sheet3!A2:C"&COUNTA(Sheet3!A1:A))}}),"Select Col1,Col2,Col3")
    

    【讨论】:

    • 感谢 Marios 非常感谢。但这是一个开销,因为我希望公式是动态的,如果我添加新的蓝色单元格,那么结果表必须自动更新。这需要手动更改公式。我将如何使它充满活力?
    猜你喜欢
    • 2010-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-12
    • 2015-08-09
    相关资源
    最近更新 更多