使用命名范围进行条件数据验证

时间:2014-12-03 20:22:00

标签: excel validation excel-formula named-ranges

我有一个名为" myList"定义为Sheet1的第1到第200行。共有20列,第8列是关于员工的信息,而最后12列是0或1,以便每个月包含员工。

现在,我想创建一个下拉菜单,如果我的命名范围的第9-20列中至少有1个,则会显示员工的姓名。

现在,我使用以下公式作为数据验证:=INDEX(myList,,1)并向我显示myLast中的每个名称,在9-20列中是否有1。

我怎样才能改变这一点,以便在创建下拉菜单的数据验证中显示的唯一名称是myList第1列的名称,其中myList>的第9-20列的相应SUM()= 1?

2 个答案:

答案 0 :(得分:1)

这是workabout to your question
在最后一列之后创建一列 SUM ,并计算每一行的总和。我们可以说数据表的列 V 然后使用以下数组公式过滤总和为 > = 1 的名称
假设您将此公式放在 X1 中,然后向下拖动并填充到最后一行。

=IFERROR(INDEX($A$2:$V$31;SMALL(IF($V$2:$V$31>=1;ROW($V$2:$V$31));ROW(1:1))-1;1);"")

这是一个数组公式,所以按 ctrl + shift + 输入来计算公式



然后在 Z1 中根据 列X 中的已过滤名称创建下拉列表。
请用 201 替换 31 ,因为如果是这样的话,您将有200行加上一行标题。我在示例表中使用了30个项目。
告诉我它是否有效。
***UPDATED***
抱歉公式中有错误,现在已经更正了。这是更正的公式。它现在工作正常。我还更改了下载链接。

答案 1 :(得分:0)

您可以撰写 DV 列表,而无需直接引用一组工作表单元格:

Sub NotUsingCells()
    Dim StringOfNames As String
    StringOfNames = "Larry,Moe,Curley"
    With Selection.Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:=StringOfNames
        .IgnoreBlank = True
        .InCellDropdown = True
        .InputTitle = ""
        .ErrorTitle = ""
        .InputMessage = ""
        .ErrorMessage = ""
        .ShowInput = True
        .ShowError = True
    End With
End Sub

在您的情况下,您将逐行处理 myList ,通过连接符合条件的名称来构建 StringOfNames

相关问题