Excel 在包含所有子项的列表中查找项

Excel 在包含所有子项的列表中查找项,excel,excel-formula,excel-2010,Excel,Excel Formula,Excel 2010,我有以下两个列表,A列和D列: 我想查找A列中不包含D列值的所有单元格 例如,A1应该是0,因为它包含值“a”、“b”、“c”和“d”-所有这些值都在d列中 A2应为1,因为它包含值“h”-不在D列中 到目前为止,我的公式非常简单: =COUNTIF(D1:D7,"*"&$A1&"*") 我猜我可以拆分A列中的值以进行检查,但不太确定如何拆分 如果可能,我希望避免使用任何VBA。交叉表格布局 使用您的逻辑,只需使用不同的数据布局,就可以实现以下目标: B4的公式为:=COUNT

我有以下两个列表,A列和D列:

我想查找A列中不包含D列值的所有单元格

例如,A1应该是0,因为它包含值“a”、“b”、“c”和“d”-所有这些值都在d列中

A2应为1,因为它包含值“h”-不在D列中

到目前为止,我的公式非常简单:

=COUNTIF(D1:D7,"*"&$A1&"*")
我猜我可以拆分A列中的值以进行检查,但不太确定如何拆分

如果可能,我希望避免使用任何VBA。

交叉表格布局 使用您的逻辑,只需使用不同的数据布局,就可以实现以下目标:

B4的公式为:=COUNTIFB$3*&$A4&* B1的公式为:=B2-SUMB4:B10

交叉表格布局 使用您的逻辑,只需使用不同的数据布局,就可以实现以下目标:

B4的公式为:=COUNTIFB$3*&$A4&*
B1的公式是:=B2-SUMB4:B10

你的问题对我来说并不完全清楚,因为你希望在不同情况下得到什么样的结果

您的公式将返回一个值数组,因此需要对此进行说明。数组由1或0组成,具体取决于字符是否匹配D1:D7范围内的字母

如果要返回与D列中的条目不匹配的项目列中的字母数,请尝试:

=LEN(A1)-SUMPRODUCT(COUNTIF(A1,"*"&$D$1:$D$7&"*"))
SUMPRODUCT函数对COUNTIF函数返回的数组求和


如果你想要别的东西,你需要更具体。

你的问题对我来说并不完全清楚,因为在不同的情况下你想要什么结果

您的公式将返回一个值数组,因此需要对此进行说明。数组由1或0组成,具体取决于字符是否匹配D1:D7范围内的字母

如果要返回与D列中的条目不匹配的项目列中的字母数,请尝试:

=LEN(A1)-SUMPRODUCT(COUNTIF(A1,"*"&$D$1:$D$7&"*"))
SUMPRODUCT函数对COUNTIF函数返回的数组求和


如果你想要其他东西,你需要更具体。

这更像是一个评论,但我还没有足够的声誉发表评论

如果A列中的字符串包含D列列表中的重复字符,则@ronrosenfeld接受的答案将不起作用。例如,如果A1包含abca,它将返回1而不是0,因为A的数组项是1而不是2,它只能是0或1

因此,请注意,只有在字母不重复的情况下,它才会起作用

我根据@ronrosenfeld发现的数组魔法拼凑了一个公式。罗恩回答这个问题似乎很恰当,因为我的回答是对他另一个问题的修改

以下公式适用于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))

这更像是一个评论,但我还没有足够的声誉发表评论

如果A列中的字符串包含D列列表中的重复字符,则@ronrosenfeld接受的答案将不起作用。例如,如果A1包含abca,它将返回1而不是0,因为A的数组项是1而不是2,它只能是0或1

因此,请注意,只有在字母不重复的情况下,它才会起作用

我根据@ronrosenfeld发现的数组魔法拼凑了一个公式。罗恩回答这个问题似乎很恰当,因为我的回答是对他另一个问题的修改

以下公式适用于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))

我希望能澄清我的观点question@rhughes你的解释与我提供公式时的假设有什么不同?我的配方在哪里不能满足您的需求?我希望已经澄清了我的问题question@rhughes你的解释与我提供公式时的假设有什么不同?我的公式哪里不符合您的需要?您的解决方案非常有趣!不过,有标记的答案更容易实现。再次感谢你,不客气。我同意,罗恩的回答很好。我很惊讶。你的解决方案很有趣!明显的答案更容易理解
尽管如此,我还是很高兴。再次感谢你,不客气。我同意,罗恩的回答很好。我对此感到惊讶。