在部分匹配的组中查找唯一值

在部分匹配的组中查找唯一值

我正在尝试识别包含部分匹配的匹配条件的唯一实例。

HOSTABC
HOSTABC
HOSTABC.domain.com
HOSTABC.domain.com

我正在尝试计算匹配条件的唯一实例。我有一个公式,只要单元格完全匹配,它就可以执行此操作:

=(countif($F$2:$F2,$F2$”*”)=1)+0

此公式将匹配的第一个实例保留为“1”,将匹配的所有其他实例保留为“0”。我的问题是,在我的示例中,第 1 行和第 2 行彼此完全匹配,并且与第 3 行和第 4 行部分匹配。

我当前的公式返回的结果如下:

HOSTABC             1
HOSTABC             0
HOSTABC.domain.com  1
HOSTABC.domain.com  0

我希望看到第 1 行显示为 1,而本例中的所有其他行显示为 0,有什么想法吗?

答案1

尝试使用辅助列 C,并在其中写入以下公式 =IFERROR(LEFT(A1,FIND(".",A1,1)-1),A1)

A 是您的主机名,在 D 列中写入以下内容:

=IF(COUNTIF($A$1:A1,"="&C1&"*")=1,1,0)

将这两个公式向下拖动,您将看到第 1 行的值为 1,而本例中的所有其他行的值为 0

答案2

也许您可以尝试以这样一种方式重新制定公式,即测试其任何组件是否出现在前面的单元格中。

例如,假设所有包含附加项的条目始终以点 (.) 分隔,并且有 3 个项 (HOSTABC.domain.com)(如上例所示),则以下操作可能会起作用:

=IF(OR(COUNTIF($F$1:$F1,"="&$F2&"*")>0,COUNTIF($F$1:$F1,"="&LEFT($F2,FIND(".",$F2)-1)&"*")>0,COUNTIF($F$1:$F1,"="&MID($F2,FIND(".",$F2)+1,FIND(".",$F2,FIND(".",$F2)+1)-FIND(".",$F2)-1)&"*")>0,COUNTIF($F$1:$F1,"="&RIGHT($F2,LEN($F2)-FIND(".",$F2,FIND(".",$F2)+1))&"*")>0),0,1)

编辑:

对于你关于有效性的后续问题,以下几点可能有效:

=IF(OR(COUNTIF(F:F,"="&$F2&"*")>1,COUNTIF(F:F,"="&LEFT($F2,FIND(".",$F2)-1)&"*")>1),"Valid","")

此外,我从 SuperSam 的回答中了解到,您只需要主机名(例如 HOSTABC)。上面的答案只是检查这一点。此外,如果是这样的话,您可以稍微简化我建议的第一个公式,如下所示:

=IF(OR(COUNTIF($F$1:$F1,"="&$F2&"*")>0,COUNTIF($F$1:$F1,"="&LEFT($F2,FIND(".",$F2)-1)&"*")>0),0,1)

相关内容