【问题标题】:Excel: dropdown list based on key value from other sheetExcel:基于其他工作表的键值的下拉列表
【发布时间】:2014-10-30 03:58:15
【问题描述】:

我一直在为这个要求苦苦挣扎

我有两张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

我想要一个基于 Sheet2 键值的 sheet1(fruittype 列)中的下拉列表

我知道使用“数据验证”可以轻松完成下拉列表

但困难的部分是如何使这个下拉列表仅显示基于键值的数据

【问题讨论】:

  • VLOOKUP 在您的标签中 - 似乎 VLOOKUP 是这个问题的答案。如果不是,请进一步解释
  • VLOOKUP 没用。 OP 希望填充有效值的下拉列表,而不是复制单个值。我认为在 VBA 之外没有解决方案。

标签: excel list vlookup


【解决方案1】:

您需要为此使用 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.在“refersTo”中添加名称“FruitList”到您的工作簿中输入=GetFruitList()(公式选项卡>>名称管理器)

3.在输入单元格上设置数据验证,使用“允许>>列表”选项和=FruitList作为“源”

这假设您的查找列表在 Sheet2 上(我在示例中使用工作表代号,但您可以使用选项卡名称)并且列表在第一列上排序。

它可以工作(至少它对我有用!)因为函数GetFruitList 在被点击的特定单元格的上下文中被调用 - 所以我们可以使用Application.Caller 来获取它,然后偏移一个左侧的单元格以找出我们需要为其返回值的类别项目。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-14
    • 2021-05-11
    • 2012-08-10
    • 1970-01-01
    • 2016-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多