【问题标题】:Check if any value from a range of values is present in a single cell检查单个单元格中是否存在一系列值中的任何值
【发布时间】:2020-07-20 15:57:38
【问题描述】:

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

我有一个 CustomerList 表,其中包含有关帐户的原始数据信息。我正在工作簿中创建一个风险评估报告,以解析帐户信息并冒泡满足特定条件的帐户,以便标记它们以进行交互。该信息是从我们的 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 表中提取的。

风险因素表如下所示:

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 的格式是由分号分隔的值列表。我手动选择哪些可能的值被视为风险,并将它们放在风险因素表上的单独单元格中。我可以完全控制 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?

【问题讨论】:

    标签: excel excel-formula excel-match


    【解决方案1】:

    问题出在这里:

    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 或 @987654327 @),这将对您有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-01
      • 2020-07-28
      • 2023-04-01
      • 2013-02-15
      • 1970-01-01
      相关资源
      最近更新 更多