我正在尝试填充一个单元格,并且仅显示不存在的值。如果存在,则显示另一个值。
...但是我无法理解如何做到这一点。
我目前在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)))
因此,回到我的工作表1,我认为该公式需要另一个条件来说明如果正在使用的房间 ==假,那么请执行
=INDEX(config!H2:H20,
MATCH(1,
(F4=config!F2:F20)*(VLOOKUP(D4,config!C2:D20,2,FALSE)=config!G2:G20),0))
否则,如果所有房间都为TRUE,则显示“无空”
我尝试使用:
{=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
答案 0 :(得分:2)
要实现第一,第二,第三等匹配,您需要切换到SMALL(IF(...或AGGREGATE,以将匹配的行号返回到INDEX,其中 k 参数由本地工作表上已使用的累进COUNTIF或COUNTIFS个值提供。
虽然最终可能会出现一个过于复杂的单个公式,但您使用双重查找匹配列D到config!C:C来返回config!D:D中的值时,可以使用“帮助程序”列以简化条件计数。
将此公式放入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个!当您用尽了可能的匹配值时,就会发生错误。