使用Excel公式检查ID是否存在于LOV列表中的“;”分隔的string中

在一个单元格中,我有一个用分号分隔的多值,如下所示:红色;蓝色;绿色我需要比较每个值是否存在于列表中:黑色橙色绿色蓝色红色我认为它应该是一个数组公式,不知道如何设置它。 这甚至有可能吗? 问候Michał

你没有提到你正在寻找什么输出。 以下是两种可能的解决scheme。

1.如果您正在查找列表单元格中的单词数,请使用以下公式:

=SUMPRODUCT(ISNUMBER(FIND($E$2:$E$6,$A2))*1) 

在这里输入图像说明

2.如果您希望列表中的单元格中的单词显示在单独的列中,请使用以下数组公式

 =IFERROR(INDEX($J$2:$J$6,SMALL(IF(ISNUMBER(FIND($J$2:$J$6,$A2)),ROW($J$2:$J$6)-ROW($J$1)),COLUMNS($A1:A1))),"") 

根据需要拖放/复制上面的公式。 作为一个数组公式,你必须通过按Ctrl + Shift + Enter来提交这个公式。

在这里输入图像说明

您可以编写这个UDF并将其用作公式。 不知道需要什么输出。 这个UDF给出了在列表中匹配的项目数量。

参数:

myValue – 包含用分号分隔的多值的单元格

listRange – 具有要检查的列表的范围。 应该是单列列表

 Function checkList(myValue As Range, listRange As Range) As Integer Dim t As Variant t = Split(myValue.Value, ";") Dim c As Integer c = 0 For i = LBound(t) To UBound(t) For j = 1 To listRange.Rows.Count If (t(i) = listRange(j, 1)) Then c = c + 1 End If Next j Next i checkList = c End Function 

既然你只想用excel公式来做到这一点,那么inputstring在与列表比较之前必须被拆分成多个单元格。

如果您的inputstring在A1 ,请使用下面的公式并将其右移以根据分隔符分割它们;

 =TRIM(MID(SUBSTITUTE($A1,";",REPT(" ",999)),1+((COLUMN(A1)-1)*999),999)) 

在这里输入图像说明

假设你的列表在column G ,使用下面的公式来计算你的列表中的stringRed, Blue and Green ,并返回FoundNot found

C2

 =IF(COUNTIF($G:$G,C1),"Found","Not found") 

希望这可以帮助。