我有一个电子表格,客户必须为(1)帐户,(2)帐户名称和(3)整个Excel中的帐户类别进行下拉选项,并且相互依赖。我实际上做了一个非VBA下拉列表相互依赖。问题是下拉列表一次只能运行一个,而不是进行多次选择。
所以我当然想要的是下拉列表,不仅适用于一行,而且可以选择多行。 此下拉列表在非VBA中工作的唯一方法是根据帐户数量及其家属创建多个唯一列表。
到目前为止,我没有使用Excel VBA,我已经完成了以下工作:
我已定义了3个主要列表范围:GLacct,GLname和&桂林航专:
创建 - 3个唯一列表: 因此,当第一个DDL" 55700"被选中,下一个DDL将填充"研究 - 其他"然后下一个DDL将填充对应于"研究 - 其他"的三个选项。
所以要在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))
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)
将数据验证添加到需要Sheet named™下拉列表的单元格中:(问题是如果我在下一行中进行另一个选择,我仍然从第一个选择中获取数据,意味着为了工作我必须为每个帐户制作尽可能多的唯一列表。
单元格:A16:uniqueGLacct
单元格:B16:uniqueGLname
单元格:C16:uniqueGLcat
如何使用Excel VBA为3个列表依赖于多个选项的Excel下拉列表动态。但是如果你注意到55700以下的帐户不能流行他们的依赖列表,因为第一个选择是55700。 不使用VBA的唯一方法是为每个依赖帐户创建唯一列表。
答案 0 :(得分:0)
我不确定如果没有宏,你就无法做到这一点。
1)首先,您可以将参考样式更改为R1C1: Link to great explanation
2)然后你会为每个唯一列表创建一个命名范围(我假设它们是有限的)。
3)然后,您将添加验证列表,然后将间接添加到该范围的名称(在标题或偏移单元格中)到每个间接。
有了这个,你可以说&#34;这一行,列偏移&#34;或任何适用的: 在这种情况下,我选择了同一行,左边一列,这是我在下拉列表中想要的命名范围的名称。
这样做的好处是你的所有细胞都有1个公式。您可以将显示更改回A1类型显示,公式将适应。