我在使用Excel時遇到小問題。這是問題的定義:Excel條件動態數據驗證
我要爲下表條件的數據驗證:
Column 1 Column 2
Y Res1
Y Res2
N Res3
N Res4
Y Res5
從上面的表,我需要一個下拉箭頭(使用數據驗證),其值從誰擁有第2列名單第1列中的'Y'值。可能嗎?如果是的話,你能否幫我解決。您的幫助將不勝感激。
請注意:我不想通過VBA爲此編寫Excel VBA,我可以這麼做..但需求是使用公式。
我在使用Excel時遇到小問題。這是問題的定義:Excel條件動態數據驗證
我要爲下表條件的數據驗證:
Column 1 Column 2
Y Res1
Y Res2
N Res3
N Res4
Y Res5
從上面的表,我需要一個下拉箭頭(使用數據驗證),其值從誰擁有第2列名單第1列中的'Y'值。可能嗎?如果是的話,你能否幫我解決。您的幫助將不勝感激。
請注意:我不想通過VBA爲此編寫Excel VBA,我可以這麼做..但需求是使用公式。
感謝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)
只要使用這個數組公式,然後抄下:
=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)
是的,我有一個公式,但我最終輸出應該在降了下來,這我不能這樣做...這就是爲什麼我使用了數據驗證關鍵字。即使如果,我在名單中使用這個公式,仍然沒有進入下拉菜單,因爲它是一個數組公式,而數據驗證需要一個列表......無論如何感謝您的回答:) –
更多答案將不勝感激。 .. –
所以我認爲你應該更好地解釋,當你問一個問題... :) – CRondao
這是一個很大的幫助。我唯一會改變的是擺脫IFERROR。有些時候你必須使用IFERROR,但它必須爲每個單元計算。使用具有要返回項目數的幫助單元格,並使用IF(CHECK> helpercell,「」,formulaFromAnswer)。這將加速計算。 – dmshow