Excel条件dynamic数据validation

我在玩Excel时遇到了一些小问题。 问题定义如下:

我希望有条件的数据validation下表:

Column 1 Column 2 Y Res1 Y Res2 N Res3 N Res4 Y Res5 

从上面的表中,我需要一个单元格下拉列表(使用数据validation)与第2列中值为'Y'的值列表。是否有可能? 如果是的话,你能帮我一下吗? 您的帮助将不胜感激。

请注意:我不想为Excel写VBA,通过VBA我可以这么做。但是要求是用公式来做。

只需使用这个数组公式,然后复制下来:

 =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)直到最后(直到至less有一个空单元格)为止。 现在把这个公式写在Source for List DataValidation中:

 =OFFSET(D1;0;0;MATCH("";myrange;0)-1;1) 

感谢CRondao和Fagun …

这是最后的答案,我正在分开写,因为已经发生了更多的争论。 所以用户在不浪费时间阅读评论的情况下,可以直接来到这里,阅读答案。

select100行或更多行,按F2,然后input下面的公式,

=IFERROR(INDEX($B$1:$B$5,SMALL(IF($A$1:$A$5="Y",ROW($A$1:$A$5),""),ROW())),"")

然后按“Ctrl + Shift + Enter”。 从名称pipe理器中定义名称范围为100或更多的单元格的myrange。

selectE1单元格,并在数据validation中写下列公式列表:

=OFFSET(D1;0;0;MATCH("";myrange;0)-1;1)