带有多个选择的从属列表的Excel VBA下拉列表

时间:2015-02-07 22:17:41

标签: excel-vba vba excel

我有一个电子表格,客户必须为(1)帐户,(2)帐户名称和(3)整个Excel中的帐户类别进行下拉选项,并且相互依赖。我实际上做了一个非VBA下拉列表相互依赖。问题是下拉列表一次只能运行一个,而不是进行多次选择。

所以我当然想要的是下拉列表,不仅适用于一行,而且可以选择多行。 此下拉列表在非VBA中工作的唯一方法是根据帐户数量及其家属创建多个唯一列表。

到目前为止,我没有使用Excel VBA,我已经完成了以下工作:

  1. 我已定义了3个主要列表范围:GLacct,GLname和&桂林航专: enter image description here

  2. 创建 - 3个唯一列表: 因此,当第一个DDL" 55700"被选中,下一个DDL将填充"研究 - 其他"然后下一个DDL将填充对应于"研究 - 其他"的三个选项。

  3. 所以要在excel中创建唯一列表,我添加了以下公式:

    UniqueGLacct: `INDEX(GLacct,MATCH(0,COUNTIF($F$1:F1,GLacct),0))`
    
    UniqueGLname: 
        `INDEX(GLname,MATCH(0,COUNTIF($G$1:G1,GLname)+(GLacct<>TM!$A$16),0))`
    
    UniqueGLcat: 
        `INDEX(GLcat,MATCH(0,COUNTIF($H$1:H1,GLcat)+(GLacct<>TM!$A$16)+(GLname<>TM!$B$16),0))`
    
    1. 名称管理员 - 参考并添加以下公式:

      GLacct:Offset(TB!$A$2,0,0,COUNTA(TB!$A$2:$A$1000)) GLname:Offset(TB!$B$2,0,0,COUNTA(TB!$B$2:$B$1000)) GLcat:Offset(TB!$C$2,0,0,COUNTA(TB!$C$2:$C$1000))

      uniqueGLacct:OFFSET(TB!$F$2,0,0,COUNT(IF(TB!$F$2:$F$1000=””,””,1)),1) uniqueGLname:OFFSET(TB!$G$2,0,0,COUNT(IF(TB!$G$2:$G$1000=””,””,1)),1) uniqueGLcat:OFFSET(TB!$H$2,0,0,COUNT(IF(TB!$H$2:$H$1000=””,””,1)),1)

    2. 将数据验证添加到需要Sheet named™下拉列表的单元格中:(问题是如果我在下一行中进行另一个选择,我仍然从第一个选择中获取数据,意味着为了工作我必须为每个帐户制作尽可能多的唯一列表。

    3. 单元格:A16:uniqueGLacct

      单元格:B16:uniqueGLname

      单元格:C16:uniqueGLcat

      如何使用Excel VBA为3个列表依赖于多个选项的Excel下拉列表动态。但是如果你注意到55700以下的帐户不能流行他们的依赖列表,因为第一个选择是55700。 不使用VBA的唯一方法是为每个依赖帐户创建唯一列表。

      enter image description here

1 个答案:

答案 0 :(得分:0)

我不确定如果没有宏,你就无法做到这一点。

1)首先,您可以将参考样式更改为R1C1: Link to great explanation

2)然后你会为每个唯一列表创建一个命名范围(我假设它们是有限的)。 enter image description here

3)然后,您将添加验证列表,然后将间接添加到该范围的名称(在标题或偏移单元格中)到每个间接。

有了这个,你可以说&#34;这一行,列偏移&#34;或任何适用的: enter image description here 在这种情况下,我选择了同一行,左边一列,这是我在下拉列表中想要的命名范围的名称。

enter image description here

这样做的好处是你的所有细胞都有1个公式。您可以将显示更改回A1类型显示,公式将适应。