使用Excel时我遇到了一个小问题。以下是问题定义:
我想要对下表进行条件数据验证:
Column 1 Column 2
Y Res1
Y Res2
N Res3
N Res4
Y Res5
从上表中,我需要一个单元格下拉列表(使用数据验证),其中列2中的值列表在列1中具有“Y”值。是否可以?如果是的话,你能帮帮我吗?我们将不胜感激。
请注意:我不想为此编写Excel VBA,通过VBA我可以这样做..但要求是与公式有关。
答案 0 :(得分:1)
只需使用此数组公式,然后复制:
=INDEX($B$1:$B$5;SMALL(IF($A$1:$A$5="Y";ROW($A$1:$A$5)-ROW($A$1)+1;"");ROWS($A$1:A1)))
别忘了按Ctrl Shift Enter
所以将公式更改为
=IFERROR(INDEX($B$1:$B$5;SMALL(IF($A$1:$A$5="Y";ROW($A$1:$A$5)-ROW($A$1)+1;"");ROWS($A$1:A1)));"")
想象一下,你正在D1中编写公式,向下复制直到最大可能匹配(例如D1:D100并将此范围命名为myrange)复制到结束(直到你得到至少一个空单元格)。现在在Source for List DataValidation中编写此公式:
=OFFSET(D1;0;0;MATCH("";myrange;0)-1;1)
答案 1 :(得分:0)
感谢CRondao和Fagun ......
这是最后的答案,我正在单独写作,因为已经有更多的辩论发生了。所以用户在不浪费时间阅读评论的情况下,可以直接来到这里,并阅读答案......
选择100行或更多行,按F2,然后输入以下公式
=IFERROR(INDEX($B$1:$B$5,SMALL(IF($A$1:$A$5="Y",ROW($A$1:$A$5),""),ROW())),"")
然后按“Ctrl + Shift + Enter”。 使用myrange为100个或更多单元格定义名称管理器的范围名称。
选择E1单元格,在数据验证中写下列表的公式:
=OFFSET(D1;0;0;MATCH("";myrange;0)-1;1)