【问题标题】:Extract values from a range with 2 columns only if the value in column 1 contains a specific word in the column 2仅当第 1 列中的值包含第 2 列中的特定单词时,才从具有 2 列的范围中提取值
【发布时间】:2020-02-02 07:20:14
【问题描述】:

我需要从不包含特定活动(项目)的列表中提取每个人。听起来很简单,但我还不能完全理解它。

请查看表 2 上的示例: https://docs.google.com/spreadsheets/d/1qjbjXFCYj1qXrVVGNnhOj11asxT_o1xHWXerRqAl1UQ/edit#gid=2105763617

这是逻辑。 首先,我尝试查看个人是否只出现一次,以及活动是否不是“项目”

=IF(A2<>"",IF(and(COUNTIF(A:A,A2)=1,B2<>"Project"),0,1),"")

然后我只提取满足这个条件的名字:

=query(ARRAYFORMULA(iF(I2:I=0,A2:A,"")), "where Col1 <>'' ")

这可行,但同一个人可能有多个作业,其中不包含我的公式未考虑的活动“项目”,也不是简单的动态数组公式。

【问题讨论】:

    标签: google-sheets filter google-sheets-formula array-formulas google-sheets-query


    【解决方案1】:
    =UNIQUE(FILTER(A2:A, B2:B<>"Project"))
    


    =UNIQUE(QUERY(A2:B, "select A where B <>'Project'", 0))
    


    =UNIQUE(FILTER(A2:A, B2:B<>"Project", 
     NOT(REGEXMATCH(A2:A, "^"&TEXTJOIN("$|^", 1, FILTER(A:A, B:B="Project"))&"$"))))
    

    【讨论】:

    • 我喜欢第一个,但不知道为什么你包含第三个,因为它没有返回 George?
    • @TerryW 第三个是用于只需要从未有过项目的唯一名称的情况
    • @player0 谢谢,这可以完成工作,但我正在尝试优化它。当我介绍这个公式时,电子表格的性能受到了巨大的打击
    【解决方案2】:

    虽然@player0 的回答解决了这个问题,但它对超过 1000 行的工作表造成了很大的影响。 相反,我提取了所有包含“Project”的名称,然后提取了所有不包含“Project”的名称,然后从第一个数组中减去所有名称以消除两者中的名称。

    =UNIQUE(FILTER(UNIQUE(FILTER(A2:A, B2:B<>"Project")), ISNA(MATCH(UNIQUE(FILTER(A2:A, B2:B<>"Project")), UNIQUE(FILTER(A2:A, B2:B="Project")),0))))
    

    【讨论】:

      【解决方案3】:

      你也可以试试这个:

      {=IFERROR(INDEX($A$2:A$25,MATCH(0,IF($C$1<>$B$2:$B$25,COUNTIF($F$1:$F1,$A$2:$A$25), ""), 0)),"")}
      

      注意

      • 单元格C1 具有条件项目,使用单元格引用生成公式 动态而不是硬编码。
      • 在单元格 F2 中输入此公式,按 Ctrl+Shift+Enter 完成, 并填写。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-10-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-03-30
        相关资源
        最近更新 更多