当A列中的项目在B列中至lessfind一个值时,返回一些内容

我正在寻找ab Excel的公式解决以下问题:

我在A列和B列中列出了与每个账户关联的收费方法。 一个帐户可以有几个相关的收费方法 – 例如:

Account no Charge method A1 IC1 A1 IC2 A1 Exempt A2 IC1 A2 IC2 A3 IC1 A3 IC2 A3 IC3 A3 Exempt A4 IC1 A4 IC2 A4 Exampt 

我想指定哪个帐户至less有一个收费方法“豁免”。 所以例如:在列C值“豁免”,如果为A1帐户“豁免”在列B中至less提到一次。我试图使用vlookup TRUE,但我不知道它是否总是准确。

这个简单的公式不需要任何帮助列或VBA:

 =IF(SUM(--($A$2:$A$13=A2)*($B$2:$B$13="Exempt"))>0,"Exempt","") 

使用Ctrl Shift Enter作为数组公式input ,然后复制下来。

在这里输入图像描述

笔记:

  • $A$2:$A$13=A2返回一个包含{TRUE;TRUE;TRUE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE}的数组。
  • $B$2:$B$13="Exempt"同样的想法$B$2:$B$13="Exempt" :它返回{FALSE;FALSE;TRUE;FALSE;FALSE;FALSE;FALSE;FALSE;TRUE;FALSE;FALSE;TRUE}
  • --将布尔值TRUE / FALSE转换为1/0。
  • 使用*将这些1和0相乘就相当于相应布尔值的逻辑与; 结果是{0;0;1;0;0;0;0;0;0;0;0;0}
  • 如果该数组的总和大于零,那么你有一个匹配。

我们得出结论,给出的例子最简单的公式就是这个:= IF(COUNTIFS(A:A,A2,B:B,“豁免”),“豁免”,“”)

谢谢大家的意见!

下面的设置将输出这个:

 Account no Charge method A1 IC1 Exempt A1 IC2 Exempt A1 Exempt Exempt A2 IC1 A2 IC2 A3 IC1 Exempt A3 IC2 Exempt A3 IC3 Exempt A3 Exempt Exempt A4 IC1 Exempt A4 IC2 Exempt A4 Exempt Exempt 

如果在A中有相应的账号,并且B列中有“豁免”,那么我已经把第三列设置为“豁免” 如果不是,则空白。

如果我误解了这个问题,请纠正我。


使用以下公式创build一个列C:

 =A1&" "&B1 

根据需要拖动整个列。

隐藏C列,然后创buildD列

 =IF(COUNTIF(C:C,A1& " Exempt")>0,"Exempt","") 

你可以试试这个vba的解决scheme,它希望帐户/收费方法在列A / B,它将填充到列D

 Sub t() 'change activesheet to sheets("NAME OF SHEET") if needed With ActiveSheet 'If list is not empty, clear it If .Range("D2").Value <> "" Then .Range("D2:" & .Range("D1").End(xlDown).Address).ClearContents End If For Each cell In .Range("A2:" & .Range("A2").End(xlDown).Address) 'if exempt found If cell.Offset(0, 1).Value = "Exempt" Then 'If list is empty, start list If .Range("D2").Value = "" Then .Range("D2").Value = cell.Value Else 'is account already in list Found = 0 For Each c In .Range("D1:" & .Range("D1").End(xlDown).Address) If c.Value = cell.Value Then Found = 1 End If Next 'If not in list, add it If Found = 0 Then .Range("D1").End(xlDown).Offset(1, 0).Value = cell.Value End If End If Next End With End Sub