【问题标题】:Comparing how many letters match比较有多少个字母匹配
【发布时间】:2014-10-26 21:05:45
【问题描述】:

我正在尝试比较 Excel 中的两个单元格以检索数值,例如:

试验类型 持续时间 字母 分心 侧向性 响应 完整 6 80 XZHTEJ 0 双边TEHZ

在该行中,我想将显示的字母与响应进行比较,并返回一个数字,表明有多少是正确的。我希望它有数字 4,因为输入的四个字母与显示的字母相匹配。

【问题讨论】:

    标签: excel excel-formula match worksheet-function


    【解决方案1】:

    VBA 可能更合适,但您没有这样标记,公式应该可以工作:

    =IFERROR(FIND(MID(C1,1,1),F1)>0,0)+IFERROR(FIND(MID(C1,2,1),F1)>0,0)+IFERROR(FIND(MID(C1,3,1),F1)>0,0)+IFERROR(FIND(MID(C1,4,1),F1)>0,0)++IFERROR(FIND(MID(C1,5,1),F1)>0,0)+IFERROR(FIND(MID(C1,6,1),F1)>0,0)
    

    【讨论】:

    • 不错的方法。您也可以使用ISNUMBER 吞下错误并返回 TRUE 或 FALSE:=ISNUMBER(FIND(MID(C1,1,1),F1))+ ...
    • @pnuts - 可能对不那么“快速和肮脏”的解决方案感兴趣。我已经在下面试了一下。
    【解决方案2】:

    如果显示的字母(在 C1 中)始终为 6 个或更少字符,@pnuts 的答案有效。

    如果响应(在 F1 中)始终为 4 个或更少字符,则以下将起作用:

    =LEN(C1)-
     LEN(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(
         C1,MID(F1,1,1),""),MID(F1,2,1),""),MID(F1,3,1),""),MID(F1,4,1),"")
     )
    

    任何一种方法都可以根据需要轻松扩展。

    【讨论】:

    • 感谢您的帮助 :) 这正如您所说的那样有效,抱歉不够具体,回复最多可以包含 6 个字母。
    【解决方案3】:

    仅供参考,这是任何长度响应的解决方案。它还具有比其他给定解决方案更短的优势(我认为)

    {=SUM(IF(ISERROR(MATCH(MID(F1,ROW(INDIRECT("B1:B"&LEN(F1))),1),MID(C1,ROW(INDIRECT("A1:A"&LEN(C1))),1),0)),0,1))}
    

    这是一个数组公式,所以省略大括号并使用 Ctrl+Shift+Enter

    输入公式

    解决方案创建两个数组,如下所示

    Shown      Inputted
     X          T
     Z          E
     H          H
     T          Z
     E
     J
    

    然后循环遍历每个 Inputted 字符,在 Shown 数组中寻找匹配,如果匹配则返回 1,否则返回 0。最后SUM 添加所有的 1(匹配项)以给出所需的结果。

    【讨论】:

      猜你喜欢
      • 2016-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多