EXCEL VBA - 根据单元格范围和字符串创建动态下拉列表[关闭]

Posted

技术标签:

【中文标题】EXCEL VBA - 根据单元格范围和字符串创建动态下拉列表[关闭]【英文标题】:EXCEL VBA - Creating a dynamic dropdown based on a cell range and a string [closed] 【发布时间】:2013-04-20 15:45:15 【问题描述】:

好的,所以我目前有一个从单独工作表上的范围填充的下拉列表。

我希望能够通过仅在每个值文本中添加具有来自另一个单元格的文本值的值来减少下拉列表中的值。

例如: 单元格 A1 显示“表格” 单元格 A2 是从范围中提取值的下拉列表 范围有'table','large table','stool'

目前,下拉菜单会引入所有值。在这种情况下,我希望它只带“桌子”和“大桌子”,因为它们都有“桌子”。

我的文件的一个例子可以在这里找到 http://www.filedropper.com/example_1

请帮忙..我要把头发扯下来!

谢谢 迈克

【问题讨论】:

您的代码在哪里?到目前为止你有什么? 请查看***.com/questions/how-to-ask 和我个人最喜欢的:mattgemmell.com/2008/12/08/what-have-you-tried @K_B 我认为这有点不公平,因为我已经在这方面寻找了其他问题,而且所有这些似乎相关的问题都不是我想要的。我在这里看不到任何上传文件的选项,所以我在我的问题中写了一个例子。如果您能告诉我如何在此处上传 Excel 电子表格,那么我可以为您完成。 THIS 会让你开始 ;) 【参考方案1】:

这是一个更简化的答案。

首先将工作表“项目”中的项目分组到辅助列中,例如使用公式(用于 C2)的“C”列并填写。

=IFERROR(RIGHT($A2,LEN($A2)-FIND(" ",$A2)),$A2)

现在在工作表“选择项目”中,对于单元格 B2,使用以下内容作为验证列表的来源 -

=OFFSET(Items!$A$1,MATCH('Choose Items'!$A2,Items!$C$2:$C$10,0),,COUNTIF(Items!$C$2:$C$10,'Choose Items'!$A2),)

您可以向下填写以将验证扩展到“B”列的其他行

如果工作表“项目”中的数据需要扩展到超过 10 行,请适当更改偏移函数的匹配范围和 countif 函数以包含整个数据(在“C”列中进行分组之后如前所述)。

确保工作表“项目”中的列表按辅助列(升序或降序)排序,在本例中为“C”列。

【讨论】:

【参考方案2】:

这是不使用 VBA 的一种方法:

(除非另有说明,否则所有说明都将在带有项目列表的工作表上完成):

    搜索提供的文本。在C2中输入=NOT(ISERROR(SEARCH('Choose Items'!$A$2,A2)))并向下复制 计算 D2 中的点击次数:=IF(C2,1,0),在 D3 中:=IF(C3,D2+1,D2) - 向下复制 创建动态列表:在 F2:F9 中,放置数字 1-8。在 G2 中,使用此公式:=IFERROR(INDEX($A$2:$A$9,MATCH(F2,$D$2:$D$9,0)),IF(F2=1,"No match","")) 并向下复制。 创建动态命名范围 - 在名称管理器 (Formulas->Name Manager) 中,插入一个新名称 ItemsDynamic 并提供 @ 987654327@作为公式。 使用新的 ItemsDynamic 作为字段验证下拉菜单的来源

完成!查看this file 获取解决方案。

【讨论】:

以上是关于EXCEL VBA - 根据单元格范围和字符串创建动态下拉列表[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

VBA excel Target.Address =单元格范围

Excel VBA函数在单元格范围内查找值

根据另一个单元格值更改单元格范围

POI实现excel的数据验证

VBA - 在工作簿中调整单元格范围以发送电子邮件

VBA,语法,将单元格范围组合在一起以获取公共变量