小姐姐的问题一个人事小姐姐找我说她平常要录入很多人员信息,工作容易出错,主要出现录错、录重复、录入效率低下的问题,很是苦恼,问我有没有好的解决办法,那么如何快速高效的录入数据呢? 我想想了, 给她做一个模板表,如下图所示: Sheet2作为录入界面,Sheet1作为新人信息表存入界面,主要有以下4点功能: 1、鼠标可选单元格主要集中在四个字段后面的单元格,输入完一个信息后,Tab键直接切换到下一个信息单元格,省去点击鼠标的麻烦,同时限定输入的位置,不会出错; 2、查重,在录入的时候,检测待录入人员是否重复录入,如果表1中已经存在此人,则提示已经存在,需要重新录入; 3、限定手机号码输入位数,防止手机号录入出错,只有输入11位数字时才能成功输入; 4、成功录入一个人员信息之后,清空录入界面,方便下一个人员的录入。 我们利用三个知识点,对这个功能进行讲解。 知识点1:利用工作表保护限定输入位置Tab键小伙伴们都不陌生,按一下Tab键,选中单元格会自动切换到后面的一个单元格,那么如果实现Tab键在指定的单元格中切换呢? 第一步,按住Ctrl键,依次点选四个单元格,然后按下组合键Ctrl+1键,调出设置单元格界面,点击【保护】,取消勾选【锁定】,按【确定】按钮完成设置; 第二步,依次点击【审阅】——【保护工作表】,在弹出界面中取消勾选【选定锁定单元格】。 完成以上两步操作之后,可以发现, 再次按Tab键,Excel输入框只会在四个单元格中来回切换! 知识点2:利用数据有效性限定输入位数紧接着限定手机号码输入的位数,数据验证(数据有效性)轻松搞定! 选中手机号码输入单元格,依次点击【数据】——【数据验证】,依次选择“文本长度”、“等于”、“11”,点击“出错警告”,在“出错信息”框内输入“请输入11位手机号码”,点击“确定”,完成设置! 注意:此步应该在最开始设置,因为第一步设置了工作表保护之后,无法再对单元格进行数据有效性设置! 知识点3:利用VBA字典字数,判断是否重复录入由于字典的特性,key值唯一,不可重复,我们只需要将已经存在的人员列表录入到字典中去接着在判断待会去员工是否存在于字典中即可; 如果存在则不录入,如果不存在则录入数据,并清空录入界面,代码如下图所示: 方便小伙伴们复制,明细代码如下所示: Sub 人员录入()a = Worksheets('sheet1').Cells(Rows.Count, 1).End(xlUp).Rowb = Range('B3')Dim arr()On Error Resume NextSet d = CreateObject('scripting.dictionary')arr = Range(Worksheets('sheet1').Cells(2, 1), Worksheets('sheet1').Cells(a, 2))For i = 1 To UBound(arr)d.Add arr(i, 1), arr(i, 2)NextIf d.exists(b) Then MsgBox '已存在此人,从重新输入'Exit SubElseWorksheets('sheet1').Cells(a + 1, 1) = Range('B3') Worksheets('sheet1').Cells(a + 1, 2) = Range('D3')Worksheets('sheet1').Cells(a + 1, 3) = Range('B5')Worksheets('sheet1').Cells(a + 1, 4) = Range('D5')Range('b3').ClearContents Range('d3').ClearContentsRange('b5').ClearContentsRange('d5').ClearContentsEnd IfMsgBox '已完成'End Sub 小结此模板并非适用于任何场景,根据不同的数据录入需求,去修改调整,重要的是学习制作的思路,思路明白了,其它的都不再是问题~ |
|