2014-02-28 48 views
1

我在使用Excel時遇到小問題。這是問題的定義:Excel條件動態數據驗證

我要爲下表條件的數據驗證:

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

從上面的表,我需要一個下拉箭頭(使用數據驗證),其值從誰擁有第2列名單第1列中的'Y'值。可能嗎?如果是的話,你能否幫我解決。您的幫助將不勝感激。

請注意:我不想通過VBA爲此編寫Excel VBA,我可以這麼做..但需求是使用公式。

回答

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」。 從名稱管理器中定義名稱範圍爲100或更多的單元格的myrange。

選擇E1細胞,並在下面公式數據驗證寫列表:

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

+0

這是一個很大的幫助。我唯一會改變的是擺脫IFERROR。有些時候你必須使用IFERROR,但它必須爲每個單元計算。使用具有要返回項目數的幫助單元格,並使用IF(CHECK> helpercell,「」,formulaFromAnswer)。這將加速計算。 – dmshow

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鍵輸入

所以公式更改爲

=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)複製到最後(直到至少有一個空單元格)。現在將這個公式來源爲列表資料驗證:

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

是的,我有一個公式,但我最終輸出應該在降了下來,這我不能這樣做...這就是爲什麼我使用了數據驗證關鍵字。即使如果,我在名單中使用這個公式,仍然沒有進入下拉菜單,因爲它是一個數組公式,而數據驗證需要一個列表......無論如何感謝您的回答:) –

+0

更多答案將不勝感激。 .. –

+0

所以我認爲你應該更好地解釋,當你問一個問題... :) – CRondao