我有以下两个列表,Column A
和Column D
:
我想在Column A
中找到不包含来自Column D
的值的所有单元格。
例如,A1应为0,因为它包含值' a',' b'' c'并且' d' - 所有这些都在D列。
A2应为1,因为它包含值' h' - 不在D栏中。
到目前为止,我的公式很简单:
=COUNTIF(D1:D7,"*"&$A1&"*")
我猜我可以拆分Column A
中的值来检查,但我不太清楚如何。
如果可能,我想避免使用任何VBA。
答案 0 :(得分:2)
就我在不同情况下对结果的要求而言,我的问题并不完全清楚。
您的公式将返回一组值,因此您需要考虑到这一点。该数组由final
或1
组成,具体取决于该字符是否与D1:D7范围内的字母匹配。
如果您想返回列中的字母数" A"与列" D"中的条目不匹配的项目,然后尝试:
0
=LEN(A1)-SUMPRODUCT(COUNTIF(A1,"*"&$D$1:$D$7&"*"))
函数对SUMPRODUCT
函数返回的数组求和。
如果你想要别的东西,你需要更具体。
答案 1 :(得分:1)
答案 2 :(得分:1)
这更像评论,但我还没有足够的声誉来发表评论。
如果A列中的字符串包含D列中列表中的重复字符,则@ronrosenfeld接受的答案将不起作用。例如,如果A1包含" abca,"它将返回1而不是0,因为" a"的数组条目是1而不是2(它只能是0或1)。
请注意,只有在不重复这些字母的情况下,它才有效。
我根据@ronrosenfeld here发现的一些阵法魔法拼凑了一个公式。 (看起来很合适,罗恩已经因为回答这个问题而获得了赞誉,因为我的回答是对他的另一个人的修改。)
以下公式适用于A列中任何长度的字符串以及包含重复项的任何字母组合。它作为常规公式输入:
=IFERROR(SUMPRODUCT(MATCH(MID(A1,ROW(OFFSET($A$1,,,LEN(A1))),1),D$1:D$7,0)=1),1)
您只需在B1中输入,然后根据需要将其复制下来。
适用于任何长度的字符串。如果单元格为空,则返回1,因为列表中没有任何内容。如果您希望空白单元格为0,则可以调整该情况的公式。蛮力方法:
=if(isblank(a1),0,IFERROR(SUMPRODUCT(MATCH(MID(A1,ROW(OFFSET($A$1,,,LEN(A1))),1),D$1:D$7,0)=1),1))