检查单个单元格中是否存在值范围内的任何值

时间:2020-07-20 15:57:38

标签: excel excel-formula excel-match

问题的症结在于,我无法检查单个单元格中是否存在值范围内的任何单个值。

我有一个CustomerList表,其中包含有关帐户的原始数据信息。我正在工作簿中创建一个RiskAssessment报告,以分析帐户信息并冒泡满足特定条件的帐户,以便可以将其标记为进行交互。信息是从我们的CRM导出的,我无法更改输出的数据格式。

客户数据如下:

Account | Signing Date | Previous  | Type          | ...
---------------------------------------------------------
Yellow  | 01/01/20     | Banana    | One;Two       | 
Blue    | 02/01/20     | Banana    | Two           | 
Black   | 03/01/20     | Orange    | Two;Three     | 
Red     | 04/01/20     | Blueberry | One;Two;Three |
White   | 05/01/20     | Cherry    | One;Four      | 
...

RiskAssessment报告的格式与此类似,其中每一列代表一个风险因素,并且根据该帐户是否满足某些条件,每个单元格都有一些分数。将对点值进行求和,并希望更高风险的帐户更加可见。点值是从RiskFactors工作表中提取的。

RiskFactors工作表如下:

Factor        | Points | Values    |     |      | ...
------------------------------------------------------
New Customer  | 1      | Banana    |     |      |
Few Products  | 2      | Banana    |     |      |
Small Account | 4      | Orange    |     |      |
Type          | 4      | One       | Two | Five |
Last Contact  | 5      | Blueberry |     |      |
Version       | 3      | Cherry    |     |      |
...

有些风险因素是单一值(布尔值),有些是列表,其中只有某些选项可供我检查。我正在尝试对原始数据进行查找(与帐户名称匹配),从指定的列中提取一些信息,然后进行处理。当我觉得不应该的时候,我对每个公式都犯了FALSE。

公式的当前迭代:

=SUMPRODUCT(--ISNUMBER(SEARCH(RiskFactors!$C$4:$D$4,CELL("address",INDEX(CustomerList!B:I,MATCH($A2,CustomerList!A:A,0),3)))))>0

特别是我正在使用“类型”列。您可以看到CRM的格式是由分号分隔的值列表。我手动选择将哪些可能的值视为风险,然后将它们放在RiskFactors工作表的不同单元格中。我完全可以控制RiskAssetment和RiskFactors工作表,这就是我开始尝试创建报告时进行设置的方式。

我是通过this help page(单元格包含很多东西之一)和this help page(获取查询结果的地址)的组合构建的。我尚未开始将其包装在IF语句中,因为我无法获取它来正确评估TRUE / FALSE,以判断帐户信息中是否包含来自风险范围的任何值。

在尝试调试时,我还将公式分为两部分,发现当我使用CELL函数时,公式开始失败。

如果我单独运行CELL函数,则会获得正确的单元格引用。

=CELL("address",INDEX(CustomerList!B:I,MATCH($A2,CustomerList!A:A,0),3))

如果我手动将单元格引用放在SUMPRODUCT函数中,则会得到正确的TRUE / FALSE。

=SUMPRODUCT(--ISNUMBER(SEARCH(RiskFactors!$C$4:$D$4,CustomerList!$D$21)))>0

但是当我将它们结合在一起时,一切都是虚假的。

任何想法为何一切都评估为FALSE?

1 个答案:

答案 0 :(得分:0)

问题在这里:

CELL("address",

我误解了address的作用。它以文本形式返回单元格的地址 。 (在文档中对此进行了明确说明,但我显然没有理解。)我需要搜索单元格的内容,而不是搜索包含单元格地址的文本。

address切换到contents可以完成这项工作。

最终的工作公式:

=SUMPRODUCT(--ISNUMBER(SEARCH(RiskFactors!$C$4:$D$4,CELL("contents",INDEX(CustomerList!B:I,MATCH($A2,CustomerList!A:A,0),3)))))>0

如果您需要检查单个单元格中是否存在某个值范围内的任何值,则单个单元格的位置并不明显并且需要动态定位(通常使用VLOOKUPINDEX MATCH),这将为您提供帮助。

相关问题