我想知道是否可以仅根据条件显示数据验证列表中的项目?
例如,如果我在单元格 A1 中输入 AAA,则单元格 B1 中的数据验证列表将仅显示其相邻单元格上的内容,例如 1,2,3;或者如果我在单元格 A1 中输入 BBB,则单元格 B1 中的数据验证列表将仅显示其相邻单元格上的内容,例如 4,5,6?
这里的问题是,写入单元格 A1 的字符串是动态的。例如,今天我有 50 个选项要放入单元格 A1,所有这些选项都有自己的命名范围,以显示在单元格 B1 中的数据验证列表中,那么明天就只能有 20 个选项了。
此外,这些命名范围内的项目数量也会有所不同。
有任何想法吗?
谢谢
我还在此处发布了一个可以附加示例文件的内容:http://www.vbaexpress.com/forum/showthread.php?67237-Data-Validation-based-on-Condition(s)-in-Excel-VBA&p=401358#post401358
例如:
https://i.stack.imgur.com/jBYYQ.png在此处输入图片描述
1:
答案1
您可以将此公式用作命名范围,您可以在 E3 中键入搜索词,它将识别包含输入文本的 A 列中的范围(例如 A10:A15 包含 AAA)并将返回 B 列中的匹配范围(例如:B10:B15)。
=INDIRECT("$B$"&MATCH($E$3,INDIRECT("$A$1:$A$"& COUNTA($A:$A)),FALSE)&":$B$"& MATCH($E$3,INDIRECT("$A$1:$A$"& COUNTA($A:$A)),FALSE) + COUNTIF(INDIRECT("$A$1:$A$"& COUNTA($A:$A)),$E$3)-1)
将公式作为命名范围放入后,请使用“数据验证”中的列表函数来引用该命名范围。