Excel 可否以顿号为条件将字符存放在多列中?

图 4.39 中地区名称的上下级之间采用了顿号作为分隔符,现要求将地区名称按级别分别存放在3个单元格中,即省、市、县名称各占一个单元格,是否有办法一次性完成呢?

以顿号为分隔符的地区表

解题步骤

Excel提供的分列工具可以按条件将字符串分别存放在多列中,只要有规律就可以分列成功,本例的规律是顿号,具体操作步骤如下。

1.选择待分列的区域B2:B6。

2.单击功能区的“数据”→“分列”,弹出图4.40所示的“文本分列向导”对话框。

图4.40 分列向导第1步

3.保持默认设置“分隔符号”,然后单击“下一步”按钮,打开图4.41所示的“文本分列向导”界面。在对话框中选择“其他”复选框,然后在全角状态下输入顿号。

图4.41 设置分列的分隔符

4.直接单击“完成”按钮,Excel会关闭对话框,同时对选区执行分列。图4.42是分列结果。

5.在B1:C1区域写入标题省、市、县/镇,然后对A1:D4区域添加边框,最终的地区表效果如图4.43所示。

图4.42 分列结果

图4.43 修改标题及添加边框

知识扩展

1.只要文本有规律就可以指定分列条件,配合分列工具对文本分列。例如,本例中按顿号分列是条件,每个地区名称中都有顿号则是规律。如果省名与市名、县名之间采用的是逗号,那么可以改为按逗号分列。

2.一次只能对一列进行分列,在选中多列的情况下无法弹出“文本分列向导”对话框。

3.Excel 允许使用单条件对文本分列,也可以使用多条件分列。例如,在图 4.44 中,地区名称中既有全角顿号又有半角逗号和半角空格作为分隔符,只要在“文本分列向导”中设置正确即可一次性分列成功。

图4.44 按3个条件分列

4.假设市名和省名都是3个字,那么可以按长度分列。例如,对图4.45所示的数据分列,可以在“文本分列向导”的第①步时按图4.46所示的方式设置分列选项。

图4.45 省名和市名都是3个字的地区表

图4.46 按宽度分列

然后在“文本分列向导”的第②步时分别在第3个字与第4个字之间单击,以及在第6个字与第7个字之间单击,从而创建两条分隔线,设置效果如图4.47所示,图4.48则是最终的分列结果。

图4.47 设置分列宽度

图4.48 分列结果

5.Excel 可以按指定的分隔符分列,也可以按指定的宽度分列,但是不能像图 4.49 一样按汉字、数值、字母分列。使用Excel的VBA可以开发插件来完成此类工作,Excel插件“E灵”集成了此工具,下载地址:http://excelbbx.net/Eling.rar

图4.49 按汉字、数值、字母分列

请在封面中缝指定的QQ群下载文件和视频教材,从而方便练习,同时验证本案例中的技巧与操作结果。

Excel 二维表能否转换成一维表?

如何将图4.31所示的二维表如何快速地转换成一维表?

图4.31 二维成绩表

二维表是指某一项数据同时占据多列的报表,在图4.31中,成绩占据了6行3列,像图4.26那种仅占用一列的则属于一维表。

解题步骤

使用数据透视表可以将二维表转换成一维表,然后配合定位、公式等操作即可完成需求,具体操作步骤如下。

1.单击成绩表中A1:D7区域的任意一个单元格,然后单击功能区的“插入”→“数据透视表”,弹出“创建数据透视表”对话框。

2.在“创建数据透视表”对话框中单击“现有工作表”,然后在“位置”处输入“E1”,表示将创建的数据透视表存放在E1单元格,操作界面如图4.32所示。

图4.32 设置透视表的存放位置

3.单击“创建数据透视表”对话框中的“确定”按钮,Excel 会在工作表中创建一个空白的透视表,同时在工作表右方自动出现数据透视表字段窗格,效果如图4.33所示。

图4.33 空白透视表

4.将姓名拖到下方的行字段中,将化学、数学和物理都拖到值字段中,工作表中的空白透视表将显示为图4.34所示的效果。

图4.34 设置透视表的字段

5.将列标题下方的“数值”拖到行标题的“姓名”下方,此时透视表将显示为图4.35所示的效果。

图4.35 移动数值字段

6.单击功能区的“设计”→“报表布局”→“以表格形式显示”。

7.单击功能区的“设计”→“总计”→“对行和列禁用”。

8.单击功能区的“设计”→“报表布局”→“重复所有项目标签”,此时透视表将显示为图4.36所示的效果。

9.复制E:G区域,然后右键单击H1单元格,从弹出的右键菜单中选择“值”(其图标为),操作界面如图4.37所示。

图4.36 调整透视表的显示方式

图4.37 选择性粘贴值

10.删除E:G区域,然后按组合键<Ctrl+H>,弹出“查找和替换”对话框。

11.将“查找内容”设置为“求和项:”,然后单击“全部替换”按钮,替换后的二维表效果如图4.38所示。

图4.38 批量删除“求和项∶”

12.最后将F1和G1单元格的值分别修改为科目和成绩。

知识扩展

1.打开“定位条件”对话框也可以按组合键一步完成,其组合键为<Alt+H+F+D+S>。要注意这几个键不能同时按,而是每按下一个键后松开再按下一个键。

2.透视表本身与数据源是相关联的,当数据源变化时,单击“设计”选项卡中的“刷新”菜单可使透视表的内容也相应地更新。本例通过选择性粘贴单独提取透视表中的值作为最终的转换结果,因此二维表数据源更新后一维表不可能相应地更新,必须重新执行本例的所有步骤,重新生成一维表。

请在封面中缝指定的QQ群下载文件和视频教材,从而方便练习,同时验证本案例中的技巧与操作结果。

Excel 一维表能否转换成二维表?

如图4.26所示的一维表如何才能快速地转换成二维表?

一维表是指每一项数据都显示在一列中的报表,在图 4.26 中,姓名占据一列,科目占据一列,成绩也占据一列。

解题步骤

当数据量大时,手工将一维表转换为二维表相当困难,但是借用数据透视表转换则简单、快捷,具体步骤如下。

1.单击成绩表中 A1:C19 区域的任意一个单元格,然后单击功能区的“插入”→“数据透视表”,弹出“创建数据透视表”对话框。

2.在“创建数据透视表”对话框中单击“现有工作表”,然后在“位置”处输入“E1”,表示将创建的数据透视表存放在E1单元格,操作界面如图4.27所示。

图4.27 设置透视表的存放位置

3.单击“创建数据透视表”对话框中的“确定”按钮,Excel 会在工作表中创建一个空白的透视表,同时在工作表右方自动出现名为“数据透视表字段”的任务窗格,效果如图 4.28 所示。

图4.28 空白透视表

4.将姓名拖到下方的行字段中,将科目拖到列字段中,再将成绩拖到值字段中,工作表中的空白透视表将显示为图4.29所示的效果。

设置透视表的字段

图4.29 设置透视表的字段

5.将E2:H8复制到E10单元格,然后删除透视表,最后剩下的二维表效果如图4.30所示。

图4.30 一维表转二维表的最终效果

知识扩展

1.使用函数也可以将一维表转换成二维表,不过需要使用4个公式,效率低而且公式复杂,用透视表则简单、快捷。

2.E1:I9区域属于透视表,用鼠标选择其中的E2:H8区域时需要掌握一点技巧,否则可能选择单元格变成了拖动单元格。正确的操作方式是选择H8,然后向左上角拖动,不能选择E2后向右下角拖动。

3.也可以直接使用透视表作为最终结果,只是需要禁用透视表的横向与纵向汇总。方法是选择透视表区域的任意单元格,然后单击功能区的“设计”→“总计”→“对行和列禁用”。

请在封面中缝指定的QQ群下载文件和视频教材,从而方便练习,同时验证本案例中的技巧与操作结果。

Excel 如何删除所有0值所在行?

在图4.21所示的工资表中,实发工资一栏中部分人员的工资为0,值为0的单元格可能有1个也可能有几百个,现要求删除所有值为0的单元格所在行,如何才能一次性删除呢?

解题步骤

删除0值所在行的重点在于找到所有0值,然后通过右键删除整行即可,具体步骤如下。

1.选择H列。

2.按组合键<Ctrl+F>,弹出“查找和替换”对话框。

3.将“查找内容”设置为0。

4.单击对话框右下角的“选项(T)>>”按钮,从而让对话框显示更多内容。

5.选择“单元格匹配”复选框。

6.将“查找范围”的默认值“公式”修改为“值”,操作界面如图4.22所示。

图4.22 设置替换选项

7.单击“查找全部”按钮,然后按下组合键<Ctrl+A>,表示选中所有找到的单元格。查找选项的设置界面与查找结果如图4.23所示。

图4.23 全选所有0值所在单元格

8.单击键盘上的右键,或者用鼠标单击 H7 单元格调出右键菜单,然后从右键菜单中选择“删除”,弹出“删除”对话框。

9.将删除选项由“下方单元格上移”修改为“整行”,然后单击“确定”按钮,H列的0值所在行将会一次性删除。图4.24是“删除”选项的设置界面,图4.25是删除结果。

图4.24 设置删除选项

图4.25 删除H列的0值所在行

知识扩展

1.手工输入单元格中的值可以替换成公式“=0/0”,但是通过公式计算出来的 0 则无法替换。因此本例没有采用将0替换公式“=0/0”,然后定位错误值再删除整行的思路。

2.Excel提供了3种查找方式,包含从单元格的值、批注和公式中查找,其中“值”是指在单元格中显示出来的值中查找,而“公式”表示不管单元格显示的值是什么,只在公式中查找。例如,A1 单元格的公式是“=153-103-20”,计算结果是 30,那么按公式查找 20,不选择“单元格匹配”复选框,A1单元格刚好符合条件,因为公式中包含数字20。如果改为按值查找,那么A1单元格不符合条件。正确理解“值”与“公式”才能用好查找与替换。

3.“查找与替换”对话框中的“单元格匹配”被选择时表示整段字符都与查找的对象一致才符合条件,不选择时表示部分字符与查找的对象一致就符合条件。例如,A1单元格中包含“张三丰”,那么未选择“单元格匹配”而查找“三”,A1 单元格是符合查找条件的,如果选择了“单元格匹配”,那么只有查找“张三丰”时A1单元格才符合查找条件。

4.“查找与替换”对话框中的“区分大小写”和“区分全/半角”仅用于查找字母,查找汉字和数字时仅需设置好“单元格匹配”选项即可。

5.当有多个单元格符合查找条件时,单击“查找下一个”按钮可以选中其中一个符合条件的单元格,单击“查找全部”时会在下方的列表中罗列出所有符合条件的单元格地址和单元格的值,但是Excel并不会选中这些符合条件的单元格。此时按下组合键<Ctrl+A>可以全选所有符合条件的单元格,要注意不能在关闭对话框后全选,而是单击“查找全部”后马上按下组合键<Ctrl+A>。

6.查找时Excel遵循一个规则:当选择了单个单元格后进行查找,Excel会在整个工作表中查找;当选择了多个单元格后进行查找,Excel 只在选区内查找。因此本例在查找前必须先选中H列,不能在选中单个单元格时执行查找操作。

请在封面中缝指定的QQ群下载文件和视频教材,从而方便练习,同时验证本案例中的技巧与操作结果。

Excel 可否批量删除空行?

由于部分人员离职,提前领了工资,在图 4.11 所示的工资表中有若干行资料已经删除。现要求将这些空行一并删除,只保留有数据的行,有何方法一次性删除所有空行呢?

图4.11 中间存在空行的工资表

解题步骤

删除空行的重点在于定位空行,删除空行比较简单。具体操作步骤如下。

1.观察工资表的每一列,看是否有哪一列符合此条件——当整行都空白时此列在该行对应的单元格才空白,否则所有单元格都有数据。显然,在数据区域中除了I列以外,其他每一列都符合条件。

2.选择A、B、C、D、E、F、G、H列中的任意一列,假设是A列(但不能包含标题,标题行是不允许删除的)。

3.按下组合键<Ctrl+G>,弹出如图4.12所示的“定位”对话框,然后单击“定位条件”按钮,弹出如图4.13所示的对话框。

4.选中“定位”对话框中的“空值”单击按钮,表示选中当前选区中的空白单元格。

图4.12 “定位”对话框

图4.13 设置定位条件

5.单击“确定”按钮保存设置,同时返回工作表界面。此时工作表中除标题行以外,A 列的所有空白单元格都处于选中状态,效果如图4.14所示。

图4.14 选中A列标题行以外的所有空白单元格

6.单击键盘中的右键键,然后在弹出的右键菜单中选择“删除”,弹出“删除”对话框。图4.15是键盘上的右键键,图4.16则是“删除”对话框。

图4.15 右键键

图4.16 “删除”对话框

7.在“删除”对话框中选择“整行”,然后单击“确定”按钮执行删除。图4.17是删除空行后的工资表。

图4.17 删除空行后的工资表

注意:有些小键盘有可能没有配备右键键,笔记本电脑也可能没有右键键,此时只能用鼠标调用右键菜单,不过要注意用鼠标单击时必须单击选中的所有空白单元格中的一个,否则无法删除空行。例如,通过“定位条件”对话框定位了A7、A11和A20以后,此时应用鼠标单击A7、A11和A20中的任意单元格调用右键菜单。

知识扩展

1.Excel的定位工具可以定位单个空白单元格,不会定位空白行。即只要单元格本身是空白的就符合定位条件,不管单元格所在的行是否全部空白。因此删除空白行的重点不在于定位空白单元格,而在于找到所有空白单元格都刚好位于空白行的列。在本例中,I列的部分空白单元格处于空白行中,部分空白单元格处于非空行中,因此不能对I列定位。

2.定位空白单元格后,调出右键菜单时,默认只能删除空白单元格,必须自行调整“删除”对话框的选项为“整行”,从而删除所有空白单元格所在的行。

3.如果数据太多,很难肉眼判断哪一列的空白单元格刚好处于空白行中,那么可以采用公式作为辅助工具来区分。仍以本例的数据为例,在所有数据的右方一列 J 列输入公式“=COUNTA(A3:I3)”,公式计算结果等于 0 者表示该行是空行,公式计算结果大于 0 者则表示该行至少有一个非空单元格,公式计算结果如图4.18所示。

图4.18 区域空行与非空行

由于Excel的定位工具无法定位0值,因此还需要改进公式,采用“=1/COUNTA(A3:I3)”,公式的含义是1除以非空单元格的数量,当非空单元格的数量为0时,只能得到错误值;当非空单元格的数量大于0时,则返回一个正数,效果如图4.19所示。

图4.19 利用公式标注空行

此时选择I列,然后打开“定位条件”对话框,按图4.20所示的方式设置定位条件为公式错误值,当单击“确定”按钮后,I列的错误值所在单元格都会被自动选中。

图4.20 设置定位条件

最后只需要从右键菜单中调出“删除”对话框,删除整行即可。

此方法步骤较多,但是判断更精确,适用于数据较多的工作表,避免肉眼判断失误。

请在封面中缝指定的QQ群下载文件和视频教材,从而方便练习,同时验证本案例中的技巧与操作结果。

Excel 大量输入资料时如何提升输入速度?

当工作表中需要大量输入数据时,输完一行资料后总需要改用鼠标来激活第二行的第一个单元格,然后才能继续输入。例如,在图 4.3 中,当在 F2 单元格输入身高后需要用鼠标单击 A3单元格,从而输入第二人的姓名。

时而键盘操作时而鼠标操作会降低输入数据的效率,如果全程都采用键盘操作则输入速度能大大提高。问题是如何才能实现仅用键盘快速输入图4.3所示的资料表呢?

解题步骤

Excel内置的记录单工具可以提升数据输入速度,具体操作步骤如下。

1.选择A1:F1区域的标题栏。

2.使用组合键<Alt+D+O>调用记录单工具。此处要注意按键方式,不能三键同时按,而是按下Alt键后松开再按D,松开D键后再按O。

按下以上组合键后并不能立即弹出记录单工具,而是弹出图4.4所示的对话框,此时单击“确定”按钮后才会弹出图4.5所示的记录单工具。

图4.4 错误提示

图4.5 记录单操作界面

3.由于光标默认处于姓名框中,因此不需要使用鼠标操作,直接输入姓名,然后按Tab键跳转到籍贯处。当输入籍贯后按下Tab键,光标会跳转到性别处……当输入完第一笔资料后,对话框中的“新建”按钮将处于激活状态,效果如图4.6所示。

图4.6 在记录单中输完第一笔资料

4.单击Enter键,Excel会将已经输入窗体中的第一笔资料一次性写入到工作表中,然后将光标切换到姓名框,等待输入下一笔资料,效果如图4.7所示。

图4.7 将第一笔资料一次性导入到工作表

5.继续输入第二笔资料,当所有项目输入完成后按下 Enter 键就自动将当前资料导入工作表中,且保存在第一笔资料的下一行,然后Excel会将光标再次移到姓名框中,从而使输入全程不需要用到鼠标,提升了输入效率。

知识扩展

1.输入资料时,时而鼠标操作、时而键盘操作会严重影响输入效率,只有全程键盘操作才是最高效的。记录单可以避免使用鼠标,执行“新建”命令后会自动返回输入框中,等待用户输入下一笔资料,删除一行资料或查看上一条、下一条都比较方便。

2.记录单在Excel 2003版本中出现在“数据”菜单中,从Excel 2007开始使用功能区替代了传统菜单,而记录单并没有出现在功能区的所有选项卡中,因此只能使用快捷键调用记录单。

3.假设不用记录单,还可以选中A2:F14区域后再输入资料,每输入一项数据后都按Enter键即可,当第一笔资料输入完后成,Excel会自动切换到第二行的第1个单元格中,等待输入第二笔资料。

4.记录单除了用于快捷输入资料以外,还可用于搜索资料。选择所有已经输入的资料(包含标题行),然后按组合键<Alt+D+O>打开记录单界面,然后单击“条件”按钮,在任意一项标题后面输入条件,再单击“上一条”或“下一条”按钮就能查看所有符合条件的数据了。

例如,在图4.8中,条件设置为年龄大于30,当单击“上一条”按钮后窗体中将显示第一条满足条件的资料,同时会注明当前资料属于第几条,效果如图4.9所示。

单击“下一条”按钮,Excel会在窗体中罗列出第二条符合条件的资料,效果如图4.10所示。

图4.8 设置条件

图4.9 第一条符合条件的资料

图4.10 第二条符合条件的资料

请在封面中缝指定的QQ群下载文件和视频教材,从而方便练习,同时验证本案例中的技巧与操作结果。

Excel 2016是否可以将多个工作簿并排查看?

当打开了多个工作簿,需要对这些工作簿的内容相互比较时,反复单击要查看的工作簿显然效率太低,是否有办法同时看到多个工作簿的内容,从而快速、高效地比较数据呢?

解题步骤

Excel提供了专用的工具来排列工作簿窗口,使用户可以同时看到多个窗口内容,具体步骤如下。

1.打开3个需要并排查看的工作簿。

2.单击功能区的“视图”→“全部重排”,弹出“重排窗口”对话框,如图4.1所示。

图4.1 “重排窗口”对话框

3.从“重排窗口”对话框中将排列方式改为“垂直并排”,然后单击“确定”按钮,Excel会将当前的3个工作簿并排显示,效果如图4.2所示。

Excel 2016垂直并排查看三个工作簿

图4.2 Excel 2016垂直并排查看三个工作簿

知识扩展

1.Excel可以将10个、8个工作簿窗口并排显示,不过由于屏幕大小问题,不宜将大于等于5个工作簿并排显示,否则每个窗口能显示的空间极其有限,并不会给查看数据带来便利。

2.“重排窗口”对话框中有平铺、水平并排、垂直并排和层叠4个选项,其中平铺表示将所有窗口同时显示在屏幕中,其中活动工作簿窗口占据左边最大的区域,其他所有工作簿窗口平均分布在右方的区域。水平并排表示将所有工作簿窗口从上向下平均分布,垂直并排表示将所有窗口从左向右平均分布,层叠表示所有窗口重叠显示,但是上层窗口不覆盖下层窗口的标题栏。

3.重排窗口仅针对同时打开多个工作簿时有效。

请在封底所指定的网站下载案例文件,从而方便练习,同时验证本案例中的技巧与操作结果。

Excel 是否可以让选区填充满屏幕以便于查看?

工作表中数据较多时,如果只想查看某个区域中的数据,而这个区域有可能远远小于一屏的空间,那么就会看不清楚数据;而这个区域远远大于一屏的空间时则只能看到该区域的局部数据,不利于查阅、比较。有没有办法让自己想查看的区域不管大小都刚好占用一屏的空间呢?

例如,在图3.81中,现在只想查看第6行到第10行的数据,是否可以让A6:I10区域填充满整个屏幕呢?

图3.81 看不清楚内容的工资表

解题步骤

Excel提供了专用的工具来调整屏幕内容,使屏幕中仅显示选中的区域,具体步骤如下。

1.选择A6:I10区域。

2.单击功能区中的“视图”→“缩放到选区”,工作表将显示图3.82所示的效果。

图3.82 缩放到选区后的效果

执行缩放后,屏幕刚好容纳选区,能看到选区中的所有单元格,更利于查阅与比较数据。

知识扩展

1.缩放到选区其实就是让选区刚好占据当前屏幕,如果选区小于屏幕就放大显示,如果选区大于屏幕就缩小显示。让选区占据一屏有利于查看数据,不需要拉滚动条即可看到所有内容。

2.Excel缩放屏幕大小是有上限与下限的,不能随意缩放,其下限是10%、上限是400%。只选择几个连续的单元格后单击“缩放到选区”菜单,有可能要放大到1000%或800%才足以填充满屏幕,但是Excel只能将选区放大到400%。同理,如果选择的区域太大,如B2:IV5000,单击“缩放到选区”菜单后只能将屏幕缩小到10%,而不会让选区刚好占据屏幕。

请在封面中缝指定的QQ群下载文件和视频教材,从而方便练习,同时验证本案例中的技巧与操作结果。

Excel 如何让标题栏总是在视线内?

当工作表中的数据超过一页,想要查看后面的数据时,唯一的做法是向下拉动滚动条,但是此举将导致标题行消失,不利于查看数据,可能导致判断失误。例如,在图3.79所示的状态下,无法了解第4列的数据属于什么项目。

如何才能解决既能看到后面的数据又能同时看到标题行呢?

拉动滚动条后看不到标题行

图3.79 拉动滚动条后看不到标题行

解题步骤

锁定窗格可以让指定行、指定列的数据永远保持在视线内,具体操作步骤如下。

1.将滚动条向上拉,直到看到第一行数据。

2.选择B3单元格,然后单击功能区的“视图”→“冻结窗格”→“冻结拆分窗格”。

3.下拉垂直滚动条,可以发现第一行和第二行总是保持在视线内,效果如图3.80所示。

图3.80 锁定前两行与首列

如果向右拉水平滚动条,那么可以发现首列同样保持在视线内。

知识扩展

1.锁定窗格工具的作用在于将上面若干行或左边若干列保存在视线以内,通常这些行或列都属于报表的标题,让它们保持在视线内有助于查看报表,了解每行或每列的数据属于哪个项目。

2.根据需求不同,允许只锁定行或只锁定列,假设要锁定前3行而不锁定列,那么应该选择A3单元格后再单击冻结拆分窗格;假设要锁定前1列而不锁定行,那么应该选择B1单元格后再单击冻结拆分窗格;假设既要锁定前1行又要锁定前一列,那么应该选择B2单元格后再单击冻结拆分窗格。

3.只能冻结前N行或者前N列,不能冻结中间行或中间列。例如,只冻结第3行或第2列是无法实现的。

4.一个工作表只能锁定一次窗格,单击一次“冻结拆分窗格”菜单后,菜单马上变成“取消冻结窗格”,再次单击则只能取消上次的设置。

5.如果要让最下方的若干行永远保持在视线内,只能采用“拆分”菜单才能实现,在后面有相关的案例介绍。

请在封面中缝指定的QQ群下载文件和视频教材,从而方便练习,同时验证本案例中的技巧与操作结果。

Excel 如何限制单元格只能输入身份证号码?

下图中B列只能输入身份证号码,禁止输入手机号码等其他数据,也禁止输入不符合规则的身份证号码。如何才能实现?

解题步骤

身份证号码都有固定的规则,不按规则输入的都禁止输入即可。使用公式计算B列的值是否符合规则,然后在数据验证中加以限制,具体操作步骤如下。

1.在I2输入以下公式:

2.将公式向下填充到I11,然后隐藏I列,避免意外删除公式。

3.选择B2:C11区域,然后单击功能区的“数据”→“数据验证”,弹出“数据验证”对话框。

4.在“数据验证”对话框中将“允许”下拉列表的默认值“任何值”修改为“自定义”,然后在公式框中输入公式“=i2”,操作界面如图3.74所示。

5.打开“出错警告”选项卡,并按图3.75的方式指定警告信息。

图3.74 设置数据验证的条件与公式

图3.75 设置出错警告

6.单击“确定”按钮保存设置,同时返回工作表界面。

7.在B2单元格输入身份证号码“'330401197502177647”,当单击Enter键后Excel不会产生任何提示,表示输入的号码符合规则。

此处要注意身份证号码前面必须有半角状态下的撇号,否则身份证号码的最后3位数字有可能丢失。

之所以说有可能丢失而不是一定会丢失,是因为部分特殊身份证号码以X结尾,这种号码本身属于文本,和超长数值的性质不同。

8.在B3单元格输入身份证号码“'750423199407146087”,当单击Enter键后Excel会弹出如图3.76所示的警告信息,因为身份证号码没有以75开头的,只有以15、35、45和65开头的。

图3.76 首位数字录入有误产生的警告

9.单击“重试”按钮,然后重新输入身份证号码“'4504231994071460871”,当单击Enter键后Excel会弹出如图3.77所示的警告信息,因为此身份证号码尽管前12位没有问题,但是其长度为19位,超过了标准长度。

图3.77 字符长度超过18位产生的警告

10.单击“重试”按钮,然后重新输入身份证号码“'4504231994077460871”,当单击Enter键后Excel会弹出如图3.78所示的警告信息,代表日期的8位数字“19940774”格式有误,一个月的天数上限是31,而此处输入的值是74。

图3.78 日期格式错误产生的警告

知识扩展

1.我国的身份证号码在10多年以前采用的15位数字,现在改成了18位,其中前6位用于说明身份证持有人所在地区的信息,第7位到第14位表示身份证号码持有人的出生年月日,第15位到第17位表示顺序码,即同一地区同一日期有多人出生时,使用顺序码来区分,第18位是校验码,校验前面的数字否是正确,有计算规律。

2.我国身份证号码的前两位按表3.1所示的方式编码。

表3.1 身份证的地区码一览

从表3.1中可以看出四川省的身份证号码是以51开头的,吉林省的身份证号码是以22开头的,湖北的身份证号码则是以42开头。如果某身份证号码以7开头则说明该号码一定有误。

3.身份证号码的第7位到第14位用于说明持有人的出生日期,因此不可能小于“19010101”也不可能大于今天的日期。

4.本例的数据验证公式使用了AND函数限制4个条件必须同时满足,否则就禁止输入。

=AND(LEN(B2)=18,OR(LEFT(B2,2)={"11","12","13","14","15","21","22","23","31","32","33","34","35","36","37","41","42","43","44","45","46","50","51","52","53","54","61","62","63","64","65","81","82"}),AND(MID(B2,7,8)>"19010101",MID(B2,7,8)<=TEXT(NOW(),"yyyymmdd")),ISNUMBER(TEXT(MID(B2,7,8),"0000-00-00")*1))

公式中的“LEN(B2)=18”表示身份证号码只允许长度为18位,否则不符合规则。公式中的“OR(LEFT(B2,2)={"11","12","13","14","15","21","22","23","31","32","33","34","35","36","37","41","42","43","44","45","46","50","51","52","53","54","61","62","63","64","65","81","82"})”表示身份证号码的前两位必须是 11、12、13、14、15、21、22、23、31、32、33、34、35、36、37、41、42、43、44、45、46、50、51、52、53、54、61、62、63、64、65、81、82 中的一个,只要满足条件之一即可,这是OR函数的功能。

公式中的“AND(MID(B2,7,8)>"19010101",MID(B2,7,8)<=TEXT(NOW(),"yyyymmdd")))”表示从身份证号码的第7位开始、提取出来的8位数必须大于“19010101”,同时小于等于今天的日期,两个条件必须同时满足,这是AND函数的功能。其中NOW函数用于产生当前时间值,而TEXT函数则负责将时间值转换成与身份证号码中代表日期的数字同样的格式,便于比较。

公式中的“ISNUMBER(TEXT(MID(B2,7,8),"0000-00-00")*1)”表示从身份证号码的第7位开始、提取出来的8位数必须是日期。判断一个8位数是否为日期的方法是:使用Text函数转换成“0000-00-00”格式,然后将它乘以 1,如果返回值是数值,表示它是日期,如果返回值是错误值,则表示不是日期。例如,公式“=ISNUMBER(TEXT(19870218,"0000-00-00")*1)”的运算结果为True,而公式“=ISNUMBER(TEXT(19870248,"0000-00-00")*1)”的运算结果为False,因为1987年2月只有28天,不存在48天,因此此数字不能代表日期。

当输入的身份证号码同时满足以上4个条件时,Excel将不会禁止用户输入当前号码。

5.数据验证的公式有所限制,禁止在公式中使用常量数组,因此本例没有在数据验证对话框中直接输入公式,而是将公式写在辅助区域中,然后在数据验证对话框中检查辅助区域是否等于True即可。

6.输入汉字、英文单词、标点符号、长度不等于18位等情况都会被阻止,但是粘贴单元格则不会被阻止,因此为了提升输入数据的准确性,使用了数据验证的区域应采用手工输入方式。

请在封面中缝指定的QQ群下载文件和视频教材,从而方便练习,同时验证本案例中的技巧与操作结果。