论文部分内容阅读
公司的员工记录表经常需要查询,就做了一个按姓名查询的界面。但实际使用中总觉得输入人名还是挺麻烦的。有没有更省事的输入姓名方法呢?使用下拉列表选择显然是比较方便的,但全部姓名都在列表中的话估计也很难找到。下面我们就来介绍两种可以更轻松输入姓名的方法吧。
用拼音首字输入
想起在联通网站登录时,有提供输入县市名的拼音首字来快速选择输入相应县市名的功能。那么,在Excel表格中是不是也能通过输入姓名的拼音首字,来快速选择输入对应的姓名呢?费了点工夫研究还真让我找到了实现的方法。
提取姓名首字拼音
打开“员工记录”工作表所在工作簿文档,新建一个“姓名”工作表。在“姓名拼音”工作表G1单元格输入公式=B1,选中G1拖动其右下角的填充柄向下复制填充到B1000,这样G列就会实时显示“员工记录”工作表B列中的所有姓名了。在此向下填充的行数请按记录表中将来可能达到的最大记录数考虑。
在I1:I23单元格中顺次输入“吖、八、攃、咑、妸、发、旮、哈、丌、咔、垃、妈、乸、噢、帊、七、冄、仨、他、屲、夕、丫、帀”23个字,在J1:J23则顺次输入abcdefghjklmnopqrstwxyz这23个字母。部分生僻字可按附图1中K列的拼音输入。
在A2输入公式=IFERROR(VLOOKUP(MID($G2,COLUMN(),1),$I$1:$J$23,2,TRUE),""),选中A2拖动填充柄把公式向右复制填充至D2单元格,即可在A2:D2分别显示姓名中各字的拼音首字。然后在F2输入公式=A2&B2&C2&D2,以完整显示姓名拼音首字。选中A2:F2双击填充柄把公式向下复制填充,即可得到所有姓名的拼音首字(如图1)。
下拉列表设置
在E2输入公式=F2&COUNTIF(F2:F$2,F2),并选中E2双击填充柄向下填充,对相同的拼音首字进行编号区分。在M1随便输入一个拼音首字cgx,在M2输入公式=IFERROR(VLOOKUP(M$1&ROW()-1,E:G,3,FALSE),"")。选中M1拖动其填充柄把公式向下填充到M20,即可显示出拼音首字为cgx的所有姓名(如图2)。估计拼音首字相同的应该不会超过20个,若真有超过20个就把公式再向下多复制几行吧。最后选中M1输入公式=查询界面!B2。
切换到“查询界面”工作表选中B2,在“数据”选项卡下单击“数据有效性”图标。在“数据有效性”窗口中单击“允许”的下拉列表,选择“序列”,在来源中输入=姓名拼音!$M$1:$M$20(如图3),确定完成设置。
现在你只要在查询界面的B2单元格输入要查询的姓名拼音首字,例如cgx,单击其后的下拉按钮就可以选择输入对应的姓名了(如图4)。
按首字选择输入
还有一种提供首字匹配的输入方式在网上输入时经常看到:输入一个字,就可以在下拉列表中显示所有以这个字开头的姓名以供选择。这样当然也可以省去输入完整姓名的时间了。在Excel中通过设置数据有效性这也很容易实现。
打开“员工记录”工作表选中姓名所在的B列进行复制,切换到“查询”工作表,选中没有数据的G列进行粘贴。右击G2单元格,选择“排序/升序”,按升序对姓名进行排序。
在B2单元格输入一个G列姓名中存在的姓,如“蔡”,以免设置时老提示源错误。选中B2单元格,在“数据”选项卡下单击“数据有效性”图标。在“数据有效性”窗口中单击“允许”的下拉列表选择“序列”,在来源中输入=OFFSET(G1,MATCH(B2&"*",G:G,0)-1,,COUNTIF(G:G,B2&"*"))。切换到“出错警告”选项卡,单击取消“输入无效数据时显示出错警告”复选项的对钩(如图5),这样只输入姓时才不会报错,确定完成设置。
现在单击B2后的下拉按钮就会列出所有姓蔡的人名供选择。以后你只要在B2输入一个姓,如“陈”,单击B2的下拉按钮就会提供所有姓陈的人名供选择输入(如图6)。不只是姓,当姓陈的人太多时,你输入“陈桂”两个字,下拉列表也会只显示以这两字开头的姓名哦。最后如果不想看到G列的姓名,可以右击G列列标选择“隐藏”。
公式中MATCH用于找出第一个姓蔡的人名所在行数,COUNTIF返回姓蔡的总人数。然后用OFFSET按这两个数值获取所有姓蔡的记录做为列表的数据源。这里最大的知识点是MATCH和COUNTIF这两个函数居然可以支持使用通配符“*”和“?”。这一点可能大家平时都没想到吧。
按拼音首字下拉列表选项应该比较少,按姓找可能个别姓会有相当多的人。其实两种方法都很不错,可惜无法设置同时生效,否则应该会更方便吧。大家就看自己的喜好选择好了。
注:两种方法都需要先用键盘输入拼音或首字,再用鼠标单击打开下拉列表选择。如果在键盘鼠标间来回操作麻烦,也可以编辑一点代码让输入后回车确认时自动打开下拉列表。右击“查询界面”工作表的标签选择“查看代码”,在打开的Microsoft Visual Basic窗口中输入以下代码。
Private Sub Worksheet_Change(ByVal 当前格 As Range)
If 当前格.Column = 2 And 当前格.Row = 2 Then
当前格.Select
Application.SendKeys "%{down}"
End If
End Sub
关闭Microsoft Visual Basic窗口返回Excel窗口,以后在B2输入拼音首字或姓名首字后回车就会显示下拉列表供你选择输入。你可以按键盘方向键选择输入,就不必用到鼠标了。
移动文本不占用内存资源
在选择了文本或图形对象后,按下F2键,在状态栏中会出现“移至何处?”的询问。单击所选择文本在文档中的新位置,然后按下回车键,则所选文字就被移动到该处。如果是误按了F2键,请按Esc键取消移动操作。如果要按如上所述方法复制文本,请将F2键换成“Shift+F2”键即可。
用拼音首字输入
想起在联通网站登录时,有提供输入县市名的拼音首字来快速选择输入相应县市名的功能。那么,在Excel表格中是不是也能通过输入姓名的拼音首字,来快速选择输入对应的姓名呢?费了点工夫研究还真让我找到了实现的方法。
提取姓名首字拼音
打开“员工记录”工作表所在工作簿文档,新建一个“姓名”工作表。在“姓名拼音”工作表G1单元格输入公式=B1,选中G1拖动其右下角的填充柄向下复制填充到B1000,这样G列就会实时显示“员工记录”工作表B列中的所有姓名了。在此向下填充的行数请按记录表中将来可能达到的最大记录数考虑。
在I1:I23单元格中顺次输入“吖、八、攃、咑、妸、发、旮、哈、丌、咔、垃、妈、乸、噢、帊、七、冄、仨、他、屲、夕、丫、帀”23个字,在J1:J23则顺次输入abcdefghjklmnopqrstwxyz这23个字母。部分生僻字可按附图1中K列的拼音输入。
在A2输入公式=IFERROR(VLOOKUP(MID($G2,COLUMN(),1),$I$1:$J$23,2,TRUE),""),选中A2拖动填充柄把公式向右复制填充至D2单元格,即可在A2:D2分别显示姓名中各字的拼音首字。然后在F2输入公式=A2&B2&C2&D2,以完整显示姓名拼音首字。选中A2:F2双击填充柄把公式向下复制填充,即可得到所有姓名的拼音首字(如图1)。
下拉列表设置
在E2输入公式=F2&COUNTIF(F2:F$2,F2),并选中E2双击填充柄向下填充,对相同的拼音首字进行编号区分。在M1随便输入一个拼音首字cgx,在M2输入公式=IFERROR(VLOOKUP(M$1&ROW()-1,E:G,3,FALSE),"")。选中M1拖动其填充柄把公式向下填充到M20,即可显示出拼音首字为cgx的所有姓名(如图2)。估计拼音首字相同的应该不会超过20个,若真有超过20个就把公式再向下多复制几行吧。最后选中M1输入公式=查询界面!B2。
切换到“查询界面”工作表选中B2,在“数据”选项卡下单击“数据有效性”图标。在“数据有效性”窗口中单击“允许”的下拉列表,选择“序列”,在来源中输入=姓名拼音!$M$1:$M$20(如图3),确定完成设置。
现在你只要在查询界面的B2单元格输入要查询的姓名拼音首字,例如cgx,单击其后的下拉按钮就可以选择输入对应的姓名了(如图4)。
按首字选择输入
还有一种提供首字匹配的输入方式在网上输入时经常看到:输入一个字,就可以在下拉列表中显示所有以这个字开头的姓名以供选择。这样当然也可以省去输入完整姓名的时间了。在Excel中通过设置数据有效性这也很容易实现。
打开“员工记录”工作表选中姓名所在的B列进行复制,切换到“查询”工作表,选中没有数据的G列进行粘贴。右击G2单元格,选择“排序/升序”,按升序对姓名进行排序。
在B2单元格输入一个G列姓名中存在的姓,如“蔡”,以免设置时老提示源错误。选中B2单元格,在“数据”选项卡下单击“数据有效性”图标。在“数据有效性”窗口中单击“允许”的下拉列表选择“序列”,在来源中输入=OFFSET(G1,MATCH(B2&"*",G:G,0)-1,,COUNTIF(G:G,B2&"*"))。切换到“出错警告”选项卡,单击取消“输入无效数据时显示出错警告”复选项的对钩(如图5),这样只输入姓时才不会报错,确定完成设置。
现在单击B2后的下拉按钮就会列出所有姓蔡的人名供选择。以后你只要在B2输入一个姓,如“陈”,单击B2的下拉按钮就会提供所有姓陈的人名供选择输入(如图6)。不只是姓,当姓陈的人太多时,你输入“陈桂”两个字,下拉列表也会只显示以这两字开头的姓名哦。最后如果不想看到G列的姓名,可以右击G列列标选择“隐藏”。
公式中MATCH用于找出第一个姓蔡的人名所在行数,COUNTIF返回姓蔡的总人数。然后用OFFSET按这两个数值获取所有姓蔡的记录做为列表的数据源。这里最大的知识点是MATCH和COUNTIF这两个函数居然可以支持使用通配符“*”和“?”。这一点可能大家平时都没想到吧。
按拼音首字下拉列表选项应该比较少,按姓找可能个别姓会有相当多的人。其实两种方法都很不错,可惜无法设置同时生效,否则应该会更方便吧。大家就看自己的喜好选择好了。
注:两种方法都需要先用键盘输入拼音或首字,再用鼠标单击打开下拉列表选择。如果在键盘鼠标间来回操作麻烦,也可以编辑一点代码让输入后回车确认时自动打开下拉列表。右击“查询界面”工作表的标签选择“查看代码”,在打开的Microsoft Visual Basic窗口中输入以下代码。
Private Sub Worksheet_Change(ByVal 当前格 As Range)
If 当前格.Column = 2 And 当前格.Row = 2 Then
当前格.Select
Application.SendKeys "%{down}"
End If
End Sub
关闭Microsoft Visual Basic窗口返回Excel窗口,以后在B2输入拼音首字或姓名首字后回车就会显示下拉列表供你选择输入。你可以按键盘方向键选择输入,就不必用到鼠标了。
移动文本不占用内存资源
在选择了文本或图形对象后,按下F2键,在状态栏中会出现“移至何处?”的询问。单击所选择文本在文档中的新位置,然后按下回车键,则所选文字就被移动到该处。如果是误按了F2键,请按Esc键取消移动操作。如果要按如上所述方法复制文本,请将F2键换成“Shift+F2”键即可。