我知道數據驗證只允許您放置255個字符。我已經命名了單元格/範圍,因爲我有幾個列表,我試圖根據一個標準來拉取或選擇某些信息。 我的公式如下:Excel-VBA援助 - 數據驗證時間太長,需要替代
=IF(AND(RETAILER="",DISPLAY_TYPE=""),"",IF(AND(RETAILER=CODES!$F$2,(OR(DISPLAY_TYPE=CODES!$V$1,DISPLAY_TYPE=CODES!$Y$1))),CODES!$V$2:$V$49,IF(AND(RETAILER=CODE S!$F$2,(OR(DISPLAY_TYPE=CODES!$AB$1,DISPLAY_TYPE=CODES!$AE$1))),CODES!$AB$2:$AB$94,IF(AND(RETAILER=CODES!$F$3,(OR(DISPLA Y_TYPE=CODES!C1,DISPLAY_TYPE=CODES!C2,DISPLAY_TYPE=CODES!C3,DISPLAY_TYPE=CODES!C4))),"INCORRECT COMBINATION, Correct Retailer or Display Type",IF(AND(RETAILER=CODES!$F$3,DISPLAY_TYPE=CODES!AH1),CODES!AH2:AH38,IF(AND(RETAILER=CODES!$F$3,DISPLAY_TYPE=CODES!AJ1),CO DES!AJ2:AJ10,IF(AND(RETAILER=CODES!$F$3,DISPLAY_TYPE=CODES!AL1),CODES!AL2:AL18,IF(AND(RETAILER=CODES!$F$3,DISPLAY_TYPE=C ODES!AN1),CODES!AN2:AN18,IF(AND(RETAILER=CODES!$F$3,DISPLAY_TYPE=CODES!AP1),CODES!AP2:AP18,IF(AND(RETAILER=CODES!$F$3,DI SPLAY_TYPE=CODES!AR1),CODES!AR2:AR29,IF(AND(RETAILER=CODES!$F$3,DISPLAY_TYPE=CODES!AT1),CODES!AT2:AT29,IF(AND(RETAILER=C ODES!$F$2,(OR(DISPLAY_TYPE=CODES!C5,DISPLAY_TYPE=CODES!C6,DISPLAY_TYPE=CODES!C7,DISPLAY_TYPE=CODES!C8,DISPLAY_TYPE=CODES !C9,DISPLAY_TYPE=CODES!C10,DISPLAY_TYPE=CODES!C11))),"INCORRECT COMBINATION, Change Retailer or Display Type",""))))))))))))
我知道,過長的數據驗證,這樣的話,我想「名」我的公式,通過選擇在我的公式是嵌套在一個單元格(按CTRL + F3,命名單元格CHECK_FORMULA)並將上面的公式放在「引用」框中。於是,我去了C21(在這裏我希望有我的數據驗證),並輸入以下內容:
=IF(OR(RETAILER="",DISPLAY_TYPE=""),"INVALID",CHECK_FORMULA)
,我收到的錯誤,「列表源必須是一個分隔的列表,或引用單行或列「。該公式根據將顯示的標準集提供一組部件列表。當公式小於255個字符時,我沒有這個問題,根據標準選擇了列表,沒有問題,但現在,因爲添加了其他列表,我遇到了這個問題。爲了實現我的目標,是否有宏可以加入?或者我可以使用CASE來獲得我想要完成的任務嗎?
我改變了你的標籤公式,因爲這是你正在處理。但是,解決方案可能是在VBA中構建自定義用戶定義的函數UDF。 – Chrismas007 2015-01-26 19:31:18
如果您可以在您的帖子的分層大綱中列出您的需求,以幫助開始建議某些VBA UDF代碼,這將會很有幫助。 – Chrismas007 2015-01-26 19:32:45