作为一个公式,你可以简单地试试:
=IF(SUM(--ISNUMBER(SEARCH({567;676;342},B:B)))>0,"Traction","")
我们必须使用分号来根据B:B 范围内的所有值评估数组中的每个元素。
注意1:这是一个CSE公式,需要通过CtrlShifterEnter
注意2:如果这确实是您上一个问题的后续,您需要这样输入:
<YourInputRange>.FormulaArray = "=IF(SUM(--ISNUMBER(SEARCH({""567"";""676"";""342""},B:B)))>0,""Traction"","""")"
或者,取决于您的Locale:
<YourInputRange>.FormulaArray = "=IF(SUM(--ISNUMBER(SEARCH({""567"",""676"",""342""},B:B)))>0,""Traction"","""")"
注意 3: 根据我之前的回答,您正在比较数组公式中的整列。请注意,这会影响您的表现。我建议您的下一步是真正获得动态 Range 对象。
编辑
关于为什么我们需要TRANSPOSEB:B 列中的值或我们数组中的值的一个小解释。让我们想象一下B1:B3中的一些示例数据:
让我们专注于我们的公式; IF(SUM(--ISNUMBER(SEARCH({567,676,342},B1:B3)))>0,"Traction","")。请注意我们目前如何比较两个垂直范围。所以基本上我们要求的公式可能如下所示:
>
答案是否定的!所以在这种情况下,结果将是""。
现在让我们比较一个垂直数组和一个水平数组,我们的公式现在看起来像:=IF(SUM(--ISNUMBER(SEARCH({567;676;342},B1:B3)))>0,"Traction",""),为了形象化,你可以想到一个矩阵:
我们的矩阵中有一个正匹配!现在因为这是比较两个数组,所以我们需要CSE 公式。这就是为什么我们宁愿有一个指定的范围,例如B1:B3,而不是完整的列引用。