我一直在努力解决这个问题
我有两张excel表格如下
Sheet1(主表)
Fruit | Fruit Type
---------------------
apple | ?????? <----- should have drop down list based on key value from Sheet2
apple | ?????? <----- should have drop down list based on key value from Sheet2
banana | ?????? <----- should have drop down list based on key value from Sheet2
apple | ?????? <----- should have drop down list based on key value from Sheet2
banana | ?????? <----- should have drop down list based on key value from Sheet2
Sheet2(水果类型)
Key | Value
---------------------
apple | Red Apple
apple | Organic Apple
apple | Green Apple
banana | African Banana
banana | Yemen's Banana
我想在sheet1(fruittype列)中有一个下拉列表,该列表应基于Sheet2键值
我知道使用“数据验证”
可以轻松完成下拉列表但困难的部分是如何使此下拉列表仅显示基于键值的数据
答案 0 :(得分:0)
你需要使用VBA - 这是一种可行的方法(虽然我不确定它是最好的......)
1.将这样的函数添加到常规模块
Function GetFruitList()
Dim m, f, rngList, rng As Range
Set rngList = Sheet2.Range("A:A")
f = Application.Caller.Offset(0, -1).Value 'what fruit ?
m = Application.Match(f, rngList, 0) 'is fruit in list ?
If Not IsError(m) Then
Set GetFruitList = rngList.Cells(m).Resize( _
Application.CountIf(rngList, f), 1).Offset(0, 1)
End If
End Function
2.在“referTo”中添加名称“FruitList”到“referTo”放=GetFruitList()
(公式标签&gt;&gt;名称管理员)
3.使用“允许&gt;&gt;列表”选项设置输入单元格的数据验证,并使用=FruitList
设置“源”
这假设您的查找列表在Sheet2上(我在示例中使用了工作表代码,但您可以使用选项卡名称),并且列表在第一列上排序。
它起作用(至少它对我有用!)因为函数GetFruitList
在被点击的特定单元格的上下文中被调用 - 所以我们可以使用Application.Caller
来获取它,然后向左偏移一个单元格,找出我们需要返回值的类别项目。