驗證下拉條件 (Validation Drop down on a condition)


問題描述

驗證下拉條件 (Validation Drop down on a condition)

its a bit confusing to write my idea but ill give it a try. Here is what i was able to do. I have a drop down on my vertical cells, so i have a list of names to pick from which is linked by [name]‑> [define] and [data] ‑> [validation]. what i would like is another vertical cell to populate another drop down depending on the condition of the first.

for instance i have a list of fruits and vegetables. My first drop down menu asks the type so i select fruit. Because of such selection my second drop down will give me a list of fruits only (no vegetables) and vice versa.+

your help is greatly appreciated.

thanks gang!


if i want to name the cell instead of vegetable but 2009 and fruit 2010 i get an error. is there a way arround? thanks

‑‑‑‑‑

參考解法

方法 1:

Let's work with some named ranges.

Name E7 "option"

Put "vegetables" into E4 and "fruits" into E5;

in E7, Data > Validation > List, source $E$4:$E$5;

put some vegetables into H4:H7; name that range "vegetables";

put some fruits into J4:J7; name that range "fruits";

Now, in E8: Data > Validation > List, source "=INDIRECT(option)".

When you make a choice in E7, the options for E8 are set accordingly.

方法 2:

Here is my code for doing exactly what you are asking.

I have defined the independent column as a named range called Major_Category and set the drop down validation to a data list. I then have several other data lists that are named cat_subItems. So, for your example the major category would have items

  • fruit
  • vegetable

then I defined to more lists called

  • cat_fruit
  • cat_vegetable

which would contain the names of the fruits or vegetables.  Then based on the major category selection the Worksheet_change event will change the drop down validation in the next column over to either cat_fruit or cat_vegetable.

Note: This code does not play nice if you are using excel's protect worksheet. See this question for dealing with Excel's worksheet/book protection.

Public Sub Worksheet_Change(ByVal target As Range)
On Error GoTo ErrHandler:

Dim VRange As Range, cell As Range
Dim msg As String
Dim validateCode As Variant
Dim modCell As Range
Set VRange = Range("Major_Category")

If Intersect(VRange, target) Is Nothing Then Exit Sub

For Each cell In Intersect(VRange, target)
    b = cell.Value
    curRow = target.Row

    Set modCell = cell.Offset(0, 1) 'cell to modify the validation'

    If Not (b = "") Then
        modCell.Validation.Delete
        modCell.Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _

        'sets the validation formula to the list/range name'
        xlBetween, Formula1:="=cat_" & b 

        modCell.Validation.IgnoreBlank = True
        modCell.Validation.InCellDropdown = True
        modCell.Validation.InputTitle = ""
        modCell.Validation.ErrorTitle = ""
        modCell.Validation.ErrorMessage = ""
        modCell.Validation.ShowInput = True
        modCell.Validation.ShowError = True

    End If
Next cell


Cleanup:

Exit Sub

ErrHandler:
MsgBox Err, vbOKOnly, "Error Occurred"
Resume Cleanup:

End Sub

方法 3:

You can't name a range "2009" ‑ because Excel would have trouble distinguishing that from the integer value 2009.  There are some other restrictions, too ‑ you couldn't name a range "A1" because Excel would get confused with the cell A1.  What you could do instead is have the 2009 and 2010 in a table, and beside them put the names of the ranges, then do a VLOOKUP to get the range name.  Alternately, you could use, say, "_2009" and have your formula as 

=INDIRECT("_" & option)

(by Oleg TarassovCarl ManasterAzim JCarl Manaster)

參考文件

  1. Validation Drop down on a condition (CC BY‑SA 3.0/4.0)

#excel-2003 #excel #excel-formula






相關問題

使用 VBA 根據 B 列的值重置 A 列中的值 (Reset values in column A based on the value of column B using VBA)

Пераўтварэнне формулы ячэйкі ў тэкст з дапамогай excel vba (Converting a cell's formula to text using excel vba)

刪除行並維護輸入範圍 (Delete Rows & Maintain Input Range)

從 VBA 自動排序中排除文本值 (Exclude Text Value From VBA Autosort)

Tại sao tôi không thể tạo biểu đồ này trong excel (sử dụng powershell) (Why can't I create this chart in excel (using powershell))

如何使用 VBA 從 Excel 中的公式中獲取單元格值? (How do I get the cell value from a formula in Excel using VBA?)

讓 Excel 2003 在 Word 文檔中進行查找並返回出現次數 (Have Excel 2003 do a Find in a Word document and return the number of occurences)

驗證下拉條件 (Validation Drop down on a condition)

在位於兩個不同工作表的兩個範圍內添加單元格 (Adding cells in two ranges which are located at two different sheets)

如何在excel中獲得所需的輸出? (How to get the required output in excel?)

從復雜查詢中獲取數據到 Excel (Getting data from a complex query to excel)

使用文本格式的用戶定義輸入從 excel 中檢索數據 (Retrieving data from excel with user defined input that is in text format)







留言討論