5

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

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

例如:单元格 A1 表示“表格”单元格 A2 是从范围中提取值的下拉列表 该范围有“表格”、“大表格”、“凳子”

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

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

请帮忙..我把头发扯掉了!

谢谢迈克

4

2 回答 2

2

这是一个更简化的答案。

首先将工作表“项目”中的项目分组到辅助列中,例如使用公式(用于 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”列。

于 2013-04-27T15:38:10.737 回答
1

这是没有 VBA 的一种方法:

(除非另有说明,否则所有说明都应在项目清单上完成): 在此处输入图像描述

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

完毕!检查此文件以获取解决方案。

于 2013-04-26T23:39:15.743 回答