代码之家  ›  专栏  ›  技术社区  ›  Sammi23

列表中的过滤功能

  •  0
  • Sammi23  · 技术社区  · 10 月前

    我有一个表,我试图使用过滤器函数根据姓氏和优先级报告名称。目前,我可以使用过滤器功能在下拉菜单中查看特定名称,但它不会根据优先级进行查看。

    该列表目前有59个值,我正试图减少所需的时间,并根据优先级创建一种更简单的查看方式。我确实有它正在寻找的其他标准(名称附带的日期范围)。由于法律原因,我无法操纵表1中的数据。

    现在我使用这个过滤公式:

    =FILTER(Table1[Names],ISNUMBER(SEARCH(I1,Table1[Names])))
    

    enter image description here

    我不确定过滤函数是否是最好的工具,或者是否有更好的建议,我的VBA使用非常有限。

    这是一个接近于我试图处理一组样本数据的公式:

    =FILTER(Table1[Names],ISNUMBER(SEARCH(Table2[Last],Table1[Names]))*(Table2[Priority]=I1))
    

    因此,如果我想在I1中输入“High”,它将返回如下结果:

    enter image description here

    表1:

    姓名
    旺达·海登
    奥林瓦伦丁
    哈里特·冈萨雷斯
    威尔弗雷多·沙阿
    德肖恩·利维
    坦纳·阿维拉
    肯尼思·豪
    钟海耶斯
    格伦达·卡德纳斯
    拉弗恩·布里格斯
    乔纳·波特
    莱尔·格雷戈里
    迈克尔·雷耶斯
    阿尔·亨特
    诺曼德·鲍尔斯
    布罗克·帕特里克
    皇家阿雷拉诺
    欧内斯汀·亨利
    阿曼德·阿里亚斯

    表2:

    弗斯特 最后 优先
    布洛克 帕特里克
    坦纳 阿维拉
    维尔弗雷多 沙阿
    海耶斯
    奥林 情人
    莱尔 格雷戈里
    德尚 征收

    基于高电平的输出(单元I1)

    威尔弗雷多·沙阿
    钟海耶斯
    莱尔·格雷戈里
    布罗克·帕特里克
    3 回复  |  直到 10 月前
        1
  •  0
  •   Mayukh Bhattacharya    10 月前

    你的公式没有错,但在 SEARCH() 功能, find_text within_text 两者都是垂直的,其中一个需要是垂直的或水平的,另一个原因@ScottCraner先生已经提到过:

    enter image description here


    一种替代方法是使用 BYROW() :

    =FILTER(Table1[Names],
     BYROW(1-ISERR(SEARCH(TOROW(FILTER(Table2[Last],I1=Table2[Priority],"")),Table1[Names])),LAMBDA(α,OR(α))))
    

    或者,不使用 LAMBDA() 辅助功能:

    =CHOOSEROWS(Table1[Names],
    SORT(XMATCH("*"&FILTER(Table2[Last],Table2[Priority]=I1),
    Table1[Names],2)))
    

    或者,

    =FILTER(Table1[Names],
     IFNA(SIGN(XLOOKUP(Table1[Names],
     Table2[First]&" "&Table2[Last],Table2[Priority])=I1),0))
    

    有很多方法可以做到这一点,因为你正在专门寻找 最后_姓名 姓名 列,添加另一个选项:

    =FILTER(Table1[Names],
     ISNUMBER(XMATCH(TEXTAFTER(Table1[Names]," ",-1),
     FILTER(Table2[Last],Table2[Priority]=I1,""))))
    

        2
  •  0
  •   P.b    10 月前

    =FILTER(Table1[Names],1-ISNA(XMATCH(Table1[Names],FILTER(Table2[First]&" "&Table2[Last],Table2[Priority]=I1))))

    请注意,您的数据不使用中间名。这很麻烦吗?

        3
  •  -1
  •   rotabor    10 月前

    这里最简单的公式

    由于您需要的一切都在表2中,请使用以下公式:

    =LET(f,FILTER(Table2,Table2[Priority]=I1),CHOOSECOLS(f,1)&" "&CHOOSECOLS(f,2))