我正在寻找解决以下问题的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
我想指定哪个帐户至少有一种收费方式"免除"。例如:在C列值中"豁免"如果是A1账号"免除"在B列中至少提到过一次。我尝试使用vlookup TRUE,但我不确定它是否总是准确的。
答案 0 :(得分:2)
这个简单的公式没有任何辅助列或VBA:
=IF(SUM(--($A$2:$A$13=A2)*($B$2:$B$13="Exempt"))>0,"Exempt","")
使用 Ctrl Shift 输入作为数组公式输入,然后向下复制。
注意:
$A$2:$A$13=A2
返回包含{TRUE;TRUE;TRUE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE}
。$B$2:$B$13="Exempt"
的相同想法:它返回{FALSE;FALSE;TRUE;FALSE;FALSE;FALSE;FALSE;FALSE;TRUE;FALSE;FALSE;TRUE}
--
将布尔值TRUE / FALSE转换为1/0。*
将这些1和0相乘相当于对应布尔值的逻辑AND;结果是{0;0;1;0;0;0;0;0;0;0;0;0}
答案 1 :(得分:2)
我们得出的结论是,给定示例的最简单的公式是这样的: = IF(COUNTIFS(A:A,A2,B:B,“豁免”),“豁免”,“”)
谢谢大家的意见!
答案 2 :(得分:1)
下面的设置将输出:
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中存在“豁免”,则我将第三列设置为“豁免”;如果没有,则为空白。
如果我误解了这个问题,请纠正我。
使用以下公式创建列C:
=A1&" "&B1
尽可能将其向下拖动整列。
隐藏C列。然后使用
创建D列=IF(COUNTIF(C:C,A1& " Exempt")>0,"Exempt","")
答案 3 :(得分:0)
你可以尝试这个vba解决方案,它希望帐户/收费方法在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