【问题标题】:Excel Match, Index VLOOKUP Multiple CriteriaExcel 匹配,索引 VLOOKUP 多个条件
【发布时间】:2023-04-01 12:28:01
【问题描述】:

我正在尝试填充一个单元格,并且仅在它尚不存在时才显示值。如果存在,则显示另一个值。

...但我无法理解如何做到这一点。

我目前在 E 列的单元格上放置了以下公式

=INDEX(config!H2:H20,
MATCH(1,
(F4=config!F2:F20)*(VLOOKUP(D4,config!C2:D20,2,FALSE)=config!G2:G20),0))

这符合您在此处看到的其他一些条件。但是,您还可以看到值 7 显示了两次。我希望它不显示任何正在使用的值。

因此,我在配置表中添加了一个额外的列,称为“使用中的房间”,数据来自该列...此列有一些公式可以检查值是否正在使用中

=NOT(ISERROR(MATCH(H2,Sheet1!E2:E41,0)))

您可以在此处查看此操作:

所以,回到我的 sheet1,我认为这个公式需要另一个条件来表示 If room in use == FALSE then do

=INDEX(config!H2:H20,
MATCH(1,
(F4=config!F2:F20)*(VLOOKUP(D4,config!C2:D20,2,FALSE)=config!G2:G20),0))

如果所有房间都为 TRUE,则显示“None Available”

我尝试使用:

{=INDEX(config!H2:H20,MATCH(1,(F5=config!F2:F20)*("FALSE"=config!J2:J20)*(VLOOKUP(D5,config!C2:D20,2,FALSE)=config!G2:G20),0)) }

但无济于事......

这甚至可以在 excel 公式中实现,还是我需要使用 VBA?

我已在此处附上我的 excel 文档:https://www.dropbox.com/s/crmbbp8esdvnv29/Book1.xlsm?dl=0

【问题讨论】:

    标签: excel vba excel-formula


    【解决方案1】:

    要实现 第一、第二、第三等匹配,您需要切换到 SMALL(IF(... 或 AGGREGATE 以将匹配的行号返回到 所在的 INDEX k 参数由本地工作表上已使用值的渐进式 COUNTIF 或 COUNTIFS 提供。

    虽然n 过于复杂 单个公式最终可能是可能的,但您使用双重查找匹配列 D 到 config!C:C 来返回 config!D:D 中的值可以使用'helper' 列来简化条件计数。

    将此公式放入 M2(可选择使用自定义数字格式 ;;;),然后向下拖动到 M2:M20。

    =VLOOKUP(D2, config!C:D, 2, FALSE)&F2
    

    E2:E20 中的公式现在是,

    =INDEX(config!H:H,
           AGGREGATE(15, 7, ROW($2:$20)/((config!F$2:F$20=F2)*(config!G$2:G$20=VLOOKUP(D2, config!C:D, 2, FALSE))), 
           COUNTIF(M$2:M2, VLOOKUP(D2, config!C:D, 2, FALSE)&F2)))
    

    在 E16 中收到错误不要感到惊讶。一旦您修复了 D16 中的错字,这将得到纠正。所有其他 #NUM!当您用完可能的匹配值时会发生错误。

    【讨论】:

    • 嘿,这真是一个聪明的解决方案,我不会想出...一些单元格返回以下错误 #NUM i.imgur.com/VI5zNBq.png - 这是因为没有剩余值吗?
    • 是的。玛丽是#NUM!因为她是第三个 YesYes 并且配置工作表上只有两个。您只是用完了匹配的可能性。
    • 感谢您的解释,非常感谢。
    猜你喜欢
    • 1970-01-01
    • 2019-10-22
    • 2013-08-16
    • 1970-01-01
    • 2017-06-26
    • 1970-01-01
    • 1970-01-01
    • 2016-05-04
    • 2017-04-21
    相关资源
    最近更新 更多