根据其他连接单元格中的值限制值(两者都依赖于相同的列表)

时间:2017-10-28 18:14:55

标签: excel vba excel-vba

    Sub Macro1()
'
' Macro1 Macro
'

'
    With Selection.Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="=Sheet2!$A:$A"
        .IgnoreBlank = True
        .InCellDropdown = True
        .InputTitle = ""
        .ErrorTitle = ""
        .InputMessage = ""
        .ErrorMessage = ""
        .ShowInput = True
        .ShowError = True
    End With
    End Sub

我有这个VBA代码,它从表2中的列表中选择下拉值。 我需要的是以下内容:  现在“A2”单元格下拉列表中显示的选项应该是除A001以外的所有选项,即除了已经在上面选择的那个...以及与第一列中的所有其他下拉列表类似。 Check this image out! This too

2 个答案:

答案 0 :(得分:1)

  

我将把所有组件放在一个工作表上;例如Sheet2中。虽然我自己的样本数据包含19 A001,A002,...等条目,但这应适用于任意数量的条目,前提是您已充分填充Z列中的数组公式。

  1. 在右侧未使用的列(如Z列)中,将此数组公式放入第二行。

    =IFERROR(INDEX(A$3:INDEX(A:A, MATCH("zzz", A:A)), MATCH(0, IF(ISERROR(MATCH(A$3:INDEX(A:A, MATCH("zzz", A:A)), C:C, 0)), COUNTIF(Z$1:Z1, A$3:INDEX(A:A, MATCH("zzz", A:A))), 1), 0)), TEXT(,))
    
  2. 使用CSE确认并填写以捕获A列中的每个条目。

    1. 转到公式,定义的名称,名称管理器,并使用以下公式创建一个新的已定义名称,例如 dv_list ,工作簿范围为引用:

      =Sheet2!$Z$2:INDEX(Sheet2!$Z:$Z, AGGREGATE(14, 6, ROW(Sheet2!$Z$2:INDEX(Sheet2!$Z:$Z, MATCH("zzz", Sheet2!$Z:$Z)))/SIGN(LEN(Sheet2!$Z$2:INDEX(Sheet2!$Z:$Z, MATCH("zzz", Sheet2!$Z:$Z)))),1))
      
    2. 选择C1:C9并使用数据,数据工具,数据验证创建列表类型数据验证,其中=dv_List来源:

    3. enter image description here

答案 1 :(得分:0)

我在这里被重新安排,因为我的问题是重复#34;但是我没有按照上面的例子来说明我将如何完成以下任务:

这个问题在这里已有答案: 根据其他连接单元格中的值限制值(均取决于相同的列表)1回答

我有以下的下拉列表:

Max85k,Max110k,Max125k,Max150k,Max175k

这些是指适合这些存储桶的最大数量。

例如,如果我的工作表上另一个单元格中列出的金额为$ 105k,我不希望允许Max85k选择。例如,如果该值为83K,那么将允许所有选择b / c该量可以适合任何桶。如果值为135k,则仅允许max150k和max175k选择。等等。

有办法做到这一点吗?