问题的症结在于,我无法检查单个单元格中是否存在值范围内的任何单个值。
我有一个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?
答案 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
如果您需要检查单个单元格中是否存在某个值范围内的任何值,则单个单元格的位置并不明显并且需要动态定位(通常使用VLOOKUP
或INDEX MATCH
),这将为您提供帮助。