【问题标题】:Parts of an unsorted list into a drop down未排序列表的部分进入下拉列表
【发布时间】:2013-09-30 17:41:01
【问题描述】:

我正在尝试创建一个数据验证下拉单元格,该单元格显示从更大的列表中提取的值列表,但仅显示查找值满足某些要求的值。这就像 SUMIF 函数,它只添加查找值满足特定要求的值。这是我的清单的一个例子:

                V   F
Apples              x
Bananas             x
Tangerines          x
Tomatoes        x   x
Broccoli        x   
Pears               x
Kiwis               x
Plums               x
Water melon         x
Squash          x   x

我只希望在下拉列表中显示第一列中带有“x”的那些。

Tomatoes
Broccoli
Squash

原始列表也无法排序。如果可以的话,我可以使用宏。我正在使用 Excel 2010。

【问题讨论】:

    标签: validation excel drop-down-menu excel-2010 vba


    【解决方案1】:

    如果您希望将一系列不带空格的有效条目用作数据验证列表,我建议如下:

    =INDEX($A$2:$A$11,SMALL(IF($B$2:$B$11<>"",ROW($A$2:$A$11)-ROW($A$2)+1),ROWS(C$2:C2)))  
    

    使用 Ctrl+Shift+Enter

    输入

    https://www.youtube.com/watch?v=6PcF04bTSOM有大约20分钟的讲解。

    【讨论】:

    • 这几乎可以工作,但您不能在数据验证中使用 Ctrl+Shift+Enter。
    【解决方案2】:

    不使用 VBA,您可以创建一个经过过滤的列表副本。然后,您可以在使用数据验证时引用该副本中的单元格。

    例如,您可以对上面的示例执行以下步骤:
    将过滤器应用于仅显示第一列中显示 x 的列表的列表。复制过滤后的列表,然后粘贴到工作表上的另一个位置。关闭列表中的过滤器,使其恢复正常。转到要添加验证下拉列表的单元格,然后选择数据验证。选择列表,然后引用复制的列表。

    【讨论】:

    • 你能给我举个例子来说明你的意思吗?
    • 这就是我想你的意思,但这比我想要的要多。
    【解决方案3】:

    使用 VBA,您可以将其用作启动器。关键是Range.Validation方法,详细解释here。这会在 A 列中读取您的列表,在 B 列中找到带有“x”的列表,并将其放入单元格 E1 中的验证列表中。

    Dim myvalidation_list As String
    Dim last_row As Long, current_row As Long
    
    last_row = Cells(Rows.Count, "A").End(xlUp).Row
    
    For current_row = 1 To last_row
      If LCase(ActiveSheet.Cells(current_row, 2).Value) = "x" Then
        'put in the delimiting "," if the list already has an entry
        If myvalidation_list <> "" Then
          myvalidation_list = myvalidation_list & ","
        End If
        'add to the validation list
        myvalidation_list = myvalidation_list _
        & ActiveSheet.Cells(current_row, 1).Value
      End If
    Next
    
    With ActiveSheet.Range("E1").Validation
      .Delete
      .Add Type:=xlValidateList, Formula1:=myvalidation_list
    End With
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-20
      • 1970-01-01
      • 2010-09-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多