【问题标题】:Vlookup a Cell which Contains a Part of Other Cell but not that StraightforwardVlookup 包含其他单元格的一部分但不那么简单的单元格
【发布时间】:2014-05-19 12:03:32
【问题描述】:

大家好,各位 Excel 专家,我被这个我无法解决的 Excel 问题困住了。我尝试使用 Index、Match、Vlookup,但无济于事。

如果 C 列的值包含 A 列中的部分值,我基本上尝试让 D 列显示 B 列的值。

所以我正在处理的是这样的事情: 修复了表格显示

+------------------------------------------------------+
| Header     Column A   Column B   Column C  Column D  |
+------------------------------------------------------+
| Row 1      111        AAA        1111                |
| Row 2      222        BBB        112                 |
| Row 3      333        CCC        2225                |
| Row 4      444        DDD        333                 |
+------------------------------------------------------+

所以我的预期结果是:

+------------------------------------------------------+
| Header     Column A   Column B   Column C  Column D  |
+------------------------------------------------------+
| Row 1      111        AAA        1111      AAA       |
| Row 2      222        BBB        112       N/A       |
| Row 3      333        CCC        2225      BBB       |
| Row 4      444        DDD        333       CCC       |
+------------------------------------------------------+

抱歉,表格显示和解释不佳。谢谢各位。

【问题讨论】:

    标签: excel if-statement indexing match vlookup


    【解决方案1】:
    =INDEX($C$2:$C$5, MATCH(1,IF(ISERR(FIND($B$2:$B$5, $D2)),0,1),0))
    

    ,其中5 是最后一个数据行。在E2 中输入array formula (Ctrl+Shift+Enter),然后向下拖动。

    顺便说一句,第 4 行给出的是CCC,而不是N/A

    【讨论】:

    • 嗨,GSerg,谢谢你的公式,但它似乎对我不起作用。我将公式作为数组公式放在 E2 上,但是 excel 只给了我 #N/A 作为答案。我想知道为什么 D2 会包含在公式中。 @Soren Holten Hansen 谢谢你修好我的桌子。
    • @user3506172 我以为你的数据从B2 开始,而Row 1A2 中的实际数据。如果数据实际上从A1 开始,则将公式中的所有内容向上移动一个单元格,然后将其放入D1=INDEX($B$1:$B$4, MATCH(1,IF(ISERR(FIND($A$1:$A$4, $C1)),0,1),0))
    • 很棒的解决方案 GSreg,非常感谢您的帮助。 GSerg 祝你有美好的一天。
    • 顺便说一句,如果您不介意为我解释公式。为什么我们在 Match 之后放置 1 以及 IF 和 ISERR 以及 Find 会做什么?我最初认为仅使用 Index 和 Match 可以解决上述问题。
    • FIND($B$2:$B$5, $D2) 创建一个数组,$B$2:$B$5 中的每个单元格对应一个项目,其中包含 D2 中相应文本的位置,或者如果未找到该文本则错误。 IF(ISERR(that array, 0, 1)) 将该数组转换为0s 和1s 的数组,其中0 表示未找到,1 表示已找到。 MATCH(1, transformed array, 0) 查找该数组中第一个值为 1(“找到”)的项目的位置。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-11
    • 2018-01-20
    • 1970-01-01
    相关资源
    最近更新 更多