如何在Excel中进行多列匹配

如何在Excel中进行多列匹配,excel,Excel,我的电子表格如下所示: A B C D ------------------------------------ 1 | Yes | No | | | | 2 | 1 | 1 | 0 | 1 | 0 | ------------------------------------ ------------------------------------ 12| Yes | No

我的电子表格如下所示:

    A      B      C      D
  ------------------------------------
1 | Yes  | No   |      |      |      |
2 | 1    | 1    | 0    | 1    | 0    |
  ------------------------------------
  ------------------------------------
12| Yes  | No   |      | Yes  | Yes  |
13| Yes  | Yes  | No   | No   |      |
14| Yes  | No   |      | No   | Yes  |
15| No   | Yes  | No   | No   |      |
...
我想根据几个条件用1或0填充第2行的单元格。如果满足以下所有条件,则该值应为1(使用单元格D2作为参考):

  • 第1行中以前的所有值应至少与表中从D12开始的一个条目相匹配。对于单元格D2,这意味着A1:C1应与表中至少一行中的A:C列完全匹配
  • 对于#1中的任何匹配行,与正在计算的单元格在同一列中应该有一个非空值。因此,单元格D2将在D列中查找与#1中的条件匹配的任何行的非空值
  • 如果上述任一条件失败,单元格值应为0。在单元格D2中,我们的值为1,因为算法在第12行和第14行中找到匹配项,在D12和D14中找到非空单元格


    我需要能够跨多个列动态地应用此功能,因此我试图避免编写特定于列的函数。我意识到我可能可以编写一个UDF来执行此操作,但如果可能的话,我想避免这样做。

    如果没有UDF,我不确定您的问题是否有一个完整的答案,但我会对该方法提出一点疑问,并说“为什么要复杂化”,并且此列不是空的(但可以是任何其他值)?”

    为什么不从该字段向后查找行匹配?在我看来,它只会将事情按列移动,事实上,这正是你在A2中所做的,因为在a之前没有任何内容。因此,在重复行上进行匹配,例如,D2将包含与C2中的示例基本相同的信息

    要在字段中查找重复项,可以使用类似于C2:
    =IF(SUMPRODUCT((A3:A15=A1)*1,(B3:B15=B1)*1,(C3:C15=C1)*1)>1,1,0)的公式


    在D2中,您可以复制该公式并添加
    (D3:D15=D1)*1
    ,等等。

    ,因为这是一个挑战,我尝试过并想出了它

    =SIGN(SUM(--(MMULT(($A1:A1=$A12:A15)*(B12:B15<>""),TRANSPOSE(COLUMN($A12:A15)^0))=COLUMNS($A1:A1))))
    
    因为除非整列为空,否则它将是1


    我不明白为什么C2是0?@TomSharpe C2失败了#2。它在第12行和第14行上查找匹配项,但这两行的C列都为空。我对问题进行了编辑,使之更加清晰。我尝试了一个SUMPRODUCT解决方案,结果看起来有点像你的。我的问题是,我想对函数进行泛化,这样我就可以在许多列中应用它。我试图避免手动添加D列(以及E列、F列等)。太棒了。工作完美。我以前没用过MMULT。我得仔细看看这是怎么回事。谢谢
    =sign(counta(a12:a15))