【问题标题】:Match in excel with multiple values in query cell在excel中与查询单元格中的多个值匹配
【发布时间】:2021-12-09 22:34:50
【问题描述】:

我有一个专栏,其中列出了特殊的基因组。还有另一列基因组,其中一些细胞有多个条目,以逗号分隔。我想要检查第二列的每个单元格是否是第一列中的任何条目。如果第二列中的单元格只有一个元素,我可以使用=NOT(ISERROR(MATCH(B2,$A$2:$A$120,0))) 来完成,但由于某些查询单元格有多个元素,这对那些元素不起作用。有什么建议吗?

【问题讨论】:

    标签: excel search


    【解决方案1】:

    试试SUMPRODUCTSEARCH

    =IF(SUMPRODUCT(--ISNUMBER(SEARCH(","&$A$2:$A$5&",",","&B2&","))),"Y","N")
    

    说明:

    我将在示例中解释单元格C2 的逻辑。

    1. 在第一步中,公式从范围和结果中获取值:

      =IF(SUMPRODUCT(--ISNUMBER(SEARCH({",AA,",",CC,",",EE,",",Gg,"},",AA,BB,"))),"Y","N")

    2. SEARCH 函数返回找到的字符串的位置数组,如果没有找到则返回错误:

      =IF(SUMPRODUCT(--ISNUMBER({1,#VALUE,#VALUE,#VALUE})),"Y","N")

    3. ISNUMBER 返回布尔数组:

      =IF(SUMPRODUCT(--{TRUE,FALSE,FALSE,FALSE}),"Y","N")

    4. -- 将布尔值转换为整数:

      =IF(SUMPRODUCT({1,0,0,0}),"Y","N")

    5. SUMPRODUCT 总结一下:

      =IF(1,"Y","N")

    6. IF 如果第一个参数是非零值,则返回 TRUE 部分。

    【讨论】:

    • 这成功了!太感谢了。你能解释一下它是如何工作的吗?
    【解决方案2】:

    如果您需要保留基因组列中的行,则将基因组列分为 3 列,并在 3 个新列 B、C 和 D 中进行 MATCH。

    =NOT(ISERROR(MATCH(A2,$B$2:$D$120,0)))
    

    编辑:或者您可以尝试使用 VB 宏和正则表达式:

    Public Function RegexExecute(str As String, reg As String, _
                                 Optional matchIndex As Long, _
                                 Optional subMatchIndex As Long) As String
        On Error GoTo ErrHandl
        Set regex = CreateObject("VBScript.RegExp"): regex.Pattern = reg
        regex.Global = Not (matchIndex = 0 And subMatchIndex = 0) 'For efficiency
        If regex.test(str) Then
            Set matches = regex.Execute(str)
            RegexExecute = matches(matchIndex).SubMatches(subMatchIndex)
            Exit Function
        End If
    ErrHandl:
        RegexExecute = CVErr(xlErrValue)
    End Function
    

    reference

    【讨论】:

    • 抱歉,我不想拆分基因组列
    • 然后你可以使用VB宏和正则表达式。例如:link
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-12
    • 1970-01-01
    相关资源
    最近更新 更多