论文部分内容阅读
图1中包含6个(6列)字段的内容,如果要实现在一个单元格中输入6列中的任意字段就可以完成对所有列的筛选,我们可以通过TEXTJOIN函数将所有列的内容连接在一起,并对该列添加筛选按钮,然后再将筛选要求和指定单元格(如图1所示的C1单元格)中输入的内容关联起来,即可实现图1所示的效果。下面笔者就以Excel 2019为例介绍具体的操作。
在原数据的最左侧插入一个新列,假设为A列,定位到A4单元格并输入公式“=TEXTJOIN("", TRUE,TEXT( B4 ,"yyyy-mmdd"), C4:G 4)”,下拉填充到A16单元格。该操作表示先使用TEX T函数将B4单元格的格式设置为“年月日”,然后再与C4:G4区域中的内容相连接,下拉后即可获得如图所示的内容(图2)。
如果经常通过员工姓名进行筛选,就将D4:D16区域中的内容复制到I4:I16区域,然后选中I4:I16区域并依次点击“数据→删除重复值”,将去除重复姓名后的数据作为数据验证的序列使用。接着定位到C1单元格,依次点击“数据→数据验证→数据验证→设置”,验证条件选择“序列”、来源选择“=$I$4:$I$9”(图3)。
继续切换到“出错警告”选项卡,去除“输入无效数据时显示出错警告(S)”的勾选,这样我们在C1单元格的下拉列表中选择员工姓名,或者直接输入其他字段的内容,如“西北区域”、“凭证编号”等,即可实现更多的可查询关键字的输入(图4)。
在指定的单元格中输入关键字后自动完成相应的筛选,我们使用的是“筛选”功能中的“文本筛选”。比如在A3单元格中添加筛选按钮后,依次点击“筛选→文本筛选→包含”,这里选择“包含”是为了能在C1单元格中模糊搜索输入的关键字(图5)。
接下来我们将C1单元格中输入的关键字和图5 所示的文本筛选参数关联起来即可,该关联操作可以借助VBA代码来实现。到“https://share.weiyun.com/9zdxPKhb”下载所需的代码文件,返回Excel后按下“Al t+F11”快捷键,在打开的VBA窗口中依次点击“插入→模块”,将上述下载到的代码粘贴到编辑框中(图6)。
代码解释:
这里先使用IF函数对C1单元格中输入的内容进行判断,然后将其和“"$A$3:$A$16”(绝对引用)数据区域的文本筛选参数相关联,并通过“Change”声明来实现在C1单元格中输入不同的数据后筛选条件的动态变化。这样指定的区域就会始终以C1单元格中输入的动态数据作为“包含文本”进行筛选。
以后当我们需要在工作簿中筛选指定的数据时,只需在A3单元格中添加筛选按钮,接着将A、I列隐藏,然后在C1单元格中输入关键字,如“王五”,即可实现按照员工姓名进行筛选了。这时如果按照图5所示的方法打开“文本筛选”参数,可以看到这里引用的就是C1单元格中输入的内容(图7)。
由于我们在图5中设定的文本筛选参数是“包含”,所以还可以在这里使用模糊搜索功能。比如忘记了某张姓员工的具体名字,那么只要在C1单元格中输入“张”,即可将所有张姓员工的数据筛选出来(图8)。
1.連接所有列的内容
在原数据的最左侧插入一个新列,假设为A列,定位到A4单元格并输入公式“=TEXTJOIN("", TRUE,TEXT( B4 ,"yyyy-mmdd"), C4:G 4)”,下拉填充到A16单元格。该操作表示先使用TEX T函数将B4单元格的格式设置为“年月日”,然后再与C4:G4区域中的内容相连接,下拉后即可获得如图所示的内容(图2)。
2.设置输入单元格的数据验证格式
如果经常通过员工姓名进行筛选,就将D4:D16区域中的内容复制到I4:I16区域,然后选中I4:I16区域并依次点击“数据→删除重复值”,将去除重复姓名后的数据作为数据验证的序列使用。接着定位到C1单元格,依次点击“数据→数据验证→数据验证→设置”,验证条件选择“序列”、来源选择“=$I$4:$I$9”(图3)。
继续切换到“出错警告”选项卡,去除“输入无效数据时显示出错警告(S)”的勾选,这样我们在C1单元格的下拉列表中选择员工姓名,或者直接输入其他字段的内容,如“西北区域”、“凭证编号”等,即可实现更多的可查询关键字的输入(图4)。
3.添加筛选条件
在指定的单元格中输入关键字后自动完成相应的筛选,我们使用的是“筛选”功能中的“文本筛选”。比如在A3单元格中添加筛选按钮后,依次点击“筛选→文本筛选→包含”,这里选择“包含”是为了能在C1单元格中模糊搜索输入的关键字(图5)。
接下来我们将C1单元格中输入的关键字和图5 所示的文本筛选参数关联起来即可,该关联操作可以借助VBA代码来实现。到“https://share.weiyun.com/9zdxPKhb”下载所需的代码文件,返回Excel后按下“Al t+F11”快捷键,在打开的VBA窗口中依次点击“插入→模块”,将上述下载到的代码粘贴到编辑框中(图6)。
代码解释:
这里先使用IF函数对C1单元格中输入的内容进行判断,然后将其和“"$A$3:$A$16”(绝对引用)数据区域的文本筛选参数相关联,并通过“Change”声明来实现在C1单元格中输入不同的数据后筛选条件的动态变化。这样指定的区域就会始终以C1单元格中输入的动态数据作为“包含文本”进行筛选。
4.实际使用
以后当我们需要在工作簿中筛选指定的数据时,只需在A3单元格中添加筛选按钮,接着将A、I列隐藏,然后在C1单元格中输入关键字,如“王五”,即可实现按照员工姓名进行筛选了。这时如果按照图5所示的方法打开“文本筛选”参数,可以看到这里引用的就是C1单元格中输入的内容(图7)。
由于我们在图5中设定的文本筛选参数是“包含”,所以还可以在这里使用模糊搜索功能。比如忘记了某张姓员工的具体名字,那么只要在C1单元格中输入“张”,即可将所有张姓员工的数据筛选出来(图8)。