【发布时间】:2015-04-07 21:56:39
【问题描述】:
我有一个电子表格,客户必须在整个 Excel 中为 (1) 帐户、(2) 帐户名称和 (3) 帐户类别进行下拉选择,并且相互依赖。我实际上做了一个相互依赖的非 VBA 下拉列表。问题是下拉列表一次只能使用一个,而不是进行多项选择。
所以我想要的当然是下拉列表不仅适用于一行,而且适用于多行的选择。 此下拉列表适用于非 VBA 的唯一方法是根据帐户及其家属的数量创建许多唯一列表。
到目前为止,在没有使用 Excel VBA 的情况下,我已经完成了以下操作:
我已经定义了 3 个主列表范围的名称:GLacct、GLname 和 GLcat:
已创建 - 3 个唯一列表: So this Unique List is populated when the first DDL "55700" is selected, next DDL will populate "Research - Other" and then the next DDL will populate 3 choices correspondent to "Research -Other".
为了在 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))`
-
名称管理器 - 引用并添加了以下公式:
GLacct:
Offset(TB!$A$2,0,0,COUNTA(TB!$A$2:$A$1000))总帐名称: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))独特的GLacct:
OFFSET(TB!$F$2,0,0,COUNT(IF(TB!$F$2:$F$1000=””,””,1)),1)唯一的GL名称:OFFSET(TB!$G$2,0,0,COUNT(IF(TB!$G$2:$G$1000=””,””,1)),1)独特的GLcat:OFFSET(TB!$H$2,0,0,COUNT(IF(TB!$H$2:$H$1000=””,””,1)),1) 将数据验证添加到需要名为 ™ 的工作表中的下拉列表的单元格:(问题是如果我在下一行中进行另一个选择,我仍然会从第一个选择中获取数据,这意味着为了工作,我必须为每个帐户创建尽可能多的唯一列表。
单元格:A16:uniqueGLacct
单元格:B16:uniqueGLname
单元格:C16:uniqueGLcat
如何使用 Excel VBA 使这个 Excel 下拉列表动态 3 个列表依赖于多个选择。但是,如果您注意到 55700 以下的帐户无法流行他们的依赖列表,因为第一个选择是 55700。 不使用 VBA 的唯一方法是为每个依赖帐户创建唯一列表。
【问题讨论】: