界门纲目科属种,学生物的同学应该都很熟悉,比方说我们做为纲哺乳纲灵长目人科人属的智人(Homo sapiens),因为学会了“八卦”这项重要技能,从而走上了一条和尼安德特人不同的道路(笑)。
生物的分类表一般在书籍中可以查询,但我手头却没有电子版的,正好百度了一份鱼类分类表,做个范例,展示如何把有内在规律的表格变成我们常见的表格形式,方便查询或VLOOKUP引用。
收到的PDF是这个样子.
先用word打开看看有无坑人的格式,一般来说PDF转word总会出现奇怪的问题,只能具体情况具体分析。
打开之后发现变成了表格格式,这很常见也易处理,全选-复制-选择性粘贴-只保留文本即可。同时不要忘记点一下清除所有格式,把文件自带的格式全部去除,便于处理。
这个时候我们观察会发现,文本是有内在规律的,即纲目科属的顺序排序,但是一个目可能对应多个科,一个科可能对应多个属,所以不能简单生成表格,仍要在处理。因为最后准备以Excel呈现,同时也方便,所以下一步处理的目的是方便Excel的步骤。我的思路是将每个阶元和元素重排成一列,在Excel中在按阶元分开。
观察发现,在每个拉丁名末尾加上段落符号是最好的方式,因此使用替换功能,这里要用到正则表达式,在替换装选择使用通配符,将“拉丁名”替换为“拉丁名+回车”的形式。(此处欢迎指正)
结果是下图的样子,可读性很强而且规则。
下面的工作是把内容复制进Excel处理,把不同的阶元分开。复制的时候,选择第一个,按住Ctrl+Shift+End,可以选择到末尾。
但在Excel中我发现有不规则的列
回到word观察可以发现,原来表格换列的时候,存在了退格(TAB)。解决方法是“退格”替换为“^p”即可,同时还发现有空行,用“^p”替换“^p^p”即可。
接下来进行阶元分类,这里我没有选择数组函数,而是用COUNTIF实现,会复杂一点但容易理解(其实是不会)。
这个函数简单地返回含有“纲”的单元格,使用IF是为空格添加0,方便后面处理。
现在的问题是每个阶元并没有对应,这里我准备进行一次向下填充,以目为例,方法是:复制并选择性粘贴为数值-选取“目”-查找“0”-全选查找结果-在单元格中输入“=上一格单元格”-Ctrl+Enter,就完成了向下填充。
这时候,只需要删除属中含0的行就得到了一一对应的分类表。删除行可以先排序在手动删除,查找含0的单元格,然后删除行。后者在数据多的时候更方便。
下一步是分开中文名和拉丁名方便使用,方法也有两种
1.快速填充法
如同然后选择快速填充即可。
2.函数法
下拉填充即可。
但是!!!在即将胜利的前一刻,我发现了有不合理的几个单元格(这证明了检查的重要性)
某些复杂汉字竟然占1个字节,导致填充错误,中文名都少了“属”字。为了方便理解(又不想用简单办法),处理办法选择最简单的:在右边插入一列,用如下公式解决之后在把正确的列返回回去。
最后,排序获得全表。
总结一下,这次的操作没用到复杂的函数,全部使用基础函数和Excel的常规功能。
正则表达式
COUNTIF\IF函数和LIFT/LEN/LENB函数
查找功能、排序功能
基础的内容其实就可以完成复杂的工作,在工作之前观察原始文件的规律很重要,可以事倍功半,同时在进入Excel工作前,一定要用word的查找功能和通配符处理掉源文件的格式的小错误,以提高效率。
有用请点赞哦!