Excel 2010:如何在验证列表中使用自动完成功能

Pie*_*ter 19 excel vba excel-vba excel-2010

我正在使用一个大型验证列表,其中有几个vlookup()函数依赖.这个清单越来越大了.有没有办法输入我正在寻找的列表项的第一个字母,而不是手动向下滚动列表搜索项目?

我已经完成了一些谷歌搜索,但这表明这在早期版本的Excel中确实是可能的,但在Excel 2010中确实不可能.希望你们能提供帮助.

JMa*_*Max 12

这是处理此问题的一种非常好的方法(在ozgrid找到):

假设您的列表已打开,Sheet2并且您希望使用带有自动完成功能的验证列表Sheet1.

On Sheet1 A1输入=Sheet2!A1并复制,包括所需的备用行数(总共300行).隐藏这些行并在"引用:"中使用此公式,以获取名为MyList的动态命名范围:

=OFFSET(Sheet1!$A$1,0,0,MATCH("*",Sheet1!$A$1:$A$300,-1),1)
Run Code Online (Sandbox Code Playgroud)

现在位于最后一个隐藏行下面的单元格中,使用数据验证和列表源使用 =MyList

[编辑]适用于Excel 2007+的版本(尽管但是在AFAIK上无法测试,但没有真正特定的版本).
假设您的数据源已打开Sheet2!A1:A300,我们假设您的验证列表(也就是自动完成)在单元格上Sheet1!A1.

  1. 创建一个动态命名范围MyList,该范围取决于放置验证的单元格的值

    =OFFSET(Sheet2!$A$1,MATCH(Sheet1!$A$1&"*",Sheet2!$A$1:$A$300,0)-1,0,COUNTA(Sheet2!$A:$A))

  2. Sheet1!A1将要引用到列表的单元格上添加验证列表=MyList

注意事项

  1. 这不是真正的自动完成,因为您必须先键入然后单击验证箭头:列表将从列表的第一个匹配元素开始

  2. 该列表将一直持续到您的数据结束.如果你想更精确(在列表中只保留匹配的元素),你可以改变COUNTAa SUMLPRODUCT来计算匹配元素的数量

  3. 您的源列表必须已排序