问题描述:输入一个关键字,下拉菜单中只显示所有包含该关键字的内容。
这里我们用公式来实现,而且公式里的函数都是常用的函数,而且这种输入关键字的方式还可以进行模糊搜索,比较实用。
我们来看看小娃是怎样利用常用函数来制作一个输入关键字的下拉菜单的?
下表显示了某个县的所有学校名称(简称)。现在我们输入一个关键字,下拉菜单中就会显示所有包含该关键字的学校。如果不输入关键字,下拉菜单就会显示所有学校:
如果不输入关键词,选择下拉菜单的时候可能会手忙脚乱,如果输入关键词,是不是就简单多了?
我们来看看小娃是如何由简单到复杂一步步完成的。
本例中创建了两个工作表,下拉菜单工作表用于完成下拉菜单,下拉菜单创建在工作表A2中,源数据工作表用于存放源数据和动态数据,该工作表的A列存放源数据学校名称关键下拉菜单,D列存放动态显示数据。
1. 定义名称
定义一个名称“学校”。点击公式 - 定义名称,在“名称”后输入“学校”,在引用位置输入以下公式:=(源数据!$A$1,1,0,(源数据!$A:$A)-1)。你也可以跳过这一步,直接在以下步骤中使用区域代替。
这样当你删除或者添加学校的时候,就会自动显示更新后的学校名称,这里定义名称的目的是为了方便以后查阅。
2.完成关键词或单词的动态显示
也就是说当输入一个关键词或者单词的时候,所有包含这个关键词的学校都会显示在动态显示区里。这个是这个例子最难的地方,小娃会从简单到复杂一步步讲解。
步骤1:在D2中输入公式:=FIND(下拉菜单!$A$2,) 公式的意思是,在下拉菜单工作表的A2中输入关键字,用函数在源数据中查找位置。因为源数据是很多所学校,所以此时肯定不会显示任何结果。
步骤2:继续嵌套一个逻辑函数:=(FIND(下拉菜单!$A$2,))。该函数用于判断第一步的结果是否为值。
步骤3:在第二步的基础上,嵌套一个逻辑函数if:=IF((FIND(下拉菜单!$A$2,)),row())。意思是:如果是值,则返回源数据对应的行号(row())。
步骤四:第三步,返回FINd找到的关键字的位置,是一个数值,通过if返回对应的行号。现在继续嵌套一个函数,在所有为数值的行号中找出最小的行号:=(IF((FIND(下拉菜单!$A$2,)),ROW()),ROW(A1))。然后同时按三个键(Ctrl++),找出最小的行号,也就是第一个包含该关键字的学校的行号:
因为小娃输入的关键字是“龙”,所以数据源中显示“龙”的学校的最小行号是第13行。
下拉填充的话,可以找到所有包含“龙”字的学校的行号。
步骤 5. 现在我们可以嵌套一个函数来查找所有学校的名称及其对应的行号:=(A:A,(IF((FIND(drop-down menu!$A$2,)),ROW()),ROW(A1)))。注意必须同时按下三个键:Ctrl++
包含关键词的学校可能有很多,所以在“动态显示”的D列中,公式下拉填充的行数应该与源数据行数差不多。
此时您可以尝试输入其他关键字,例如“安”,动态显示栏会显示如下:
这个公式确实很复杂。但是公式整体框架就是我们之前经常用的++if+row组合关键下拉菜单,剩下的都是常用函数,多想想就很容易理解了。
3.定义下拉菜单的名称
通过输入一个关键字,可以找到所有包含该关键字的学校。现在我们要将这些动态显示的数据显示在下拉菜单中。
点击公式——定义名称,弹出定义名称对话框,输入“”作为名称(可以任意取名),在引用位置输入公式:=IF(Drop-down menu!$A$2="",,( data!$D$1,1,0,(,"*"&Drop-down menu!$A$2&"*")),点击确定返回。
这个公式怎么理解呢?在(源数据!$D$1,1,0,(学校,"*"&下拉菜单!$A$2&"*"))中,(学校,"*"&下拉菜单!$A$2&"*")是源数据列表中包含关键词的数据条数,星号*是通配符,表示全部。"*"&下拉菜单!$A$2&"*"表示所有包含关键词的数据。(源数据!$D$1,1,0,(学校,"*"&下拉菜单!$A$2&"*"))表示以源数据表D1为起点,向下移动1、向右移动0,以此为起点,向下移动的高度为(学校,"*"&下拉菜单!$A$2&"*"),向右移动的宽度为1下拉词工具【下拉老品牌64xl.com】360搜索手机下拉,表示动态显示所有包含关键词的学校。
为了能够在不输入关键字的情况下仍然能够通过下拉菜单选择学校,公式前面嵌套了一个IF函数,意思是:当下拉菜单工作表中的A2为空时,显示“学校”(名称)。
4. 创建下拉菜单
回到下拉菜单工作表,点击 A2,点击数据——数据验证,打开数据验证对话框,在允许中选择“序列”,在来源中输入:=。这步可以和第 3 步合并,即不用定义“”,直接把显示公式写到数据验证“来源”下的框里。
单击数据验证对话框中的“错误警告”,并取消选中“输入无效数据时显示错误警告”。
最后点击OK返回,一个可以输入关键词的动态下拉菜单就做好了。
最后试一下,是不是只要输入关键词,点击下拉三角按钮,就会出现所有包含该关键词的学校呢?