效果展示 这样相当于做了一个筛选,当下拉列表的内容比较多时,通过关键字搜索,会更轻松地找到我们要选择的对象。 制作过程 这个公式产生循环引用的原因在于cell函数,CELL("contents")这部分,没有写第2参数,表示获取光标所在单元格(活动单元格)的内容。不清楚这个函数的用法,可以看下我的视频。 在F1单元格输入公式,F1就是光标所在的单元格,也就是F1单元格引用它自身单元格的值,所以形成循环引用。 2)选中D列的区域,点【数据】-【数据验证】,在【数据验证】的【允许】中选【序列】,来源中输入公式=OFFSET(F$1,1,,COUNTIF(F:F,"><")-1),再点击【出错警告】,取消勾选【输入无效数据时显示出错警告】,点【确定】。 =OFFSET(F$1,1,,COUNTIF(F:F,"><")-1)这个公式,就是获取F列中包含姓名的区域。把这个区域当作序列的来源。 COUNTIF(F:F,"><")这个公式,是统计F列中包含汉字的单元格个数,它会把公式产生的空文本("")排除掉。因为F列的公式会产生空文本。 这个公式本来的意思是统计F列中大于"<"的有几个单元格。因为汉字大于"<",而空文本("")小于"<",所以COUNTIF(F:F,"><")只统计汉字的个数。再用这个个数减去1个表头的个数,就是姓名的个数。 PS:总结一下思路: 首先,通过辅助列把包含关键字的姓名筛选出来;然后,把辅助列中姓名的区域作为序列的来源。 这里获取关键字时需要用到cell函数。也就是用cell函数把所选单元格中的关键字作为条件传回到辅助列的公式中。 之所以可以用数据验证实现,就是在数据验证中写公式不会产生循环引用。想要实现这个效果,其实里面的细节有很多,大家可以体验下。 https://pan.baidu.com/s/1f6a6ejsGfxmNattggzXlwg |
|