前言
Excel是我们日常办公或者开发中比较常见一款办公软件,因为其方便性,大大被人们所青睐。最近在做中图分类法时遇到了一个难题,那就是已知Excel中存储着中图分类法的名称和中图分类号以及每个中图分类号的父级分类号,如何根据这些信息得到当前分类号的层级深度。如果是一个单元格一个单元格的填写,当然是很简单了,但总的中图分类项一共有4万9千多条记录,一项一项的填肯定是很耗时的。那么如何来解决这个难题呢?
解决思路
1、第一次尝试:SQL语句
首先我想到了利用sql语句来实现,通过update set来更新,经过尝试,此处需要用到游标来实现,但如果用游标会显得很麻烦,况且对这一块并不是特别熟悉。而且这条语句“update table A set 深度=(select 深度+1 from table B where A.item_code=B.out_id )从语法上来说就是错的。
2、第二次尝试:right join
复制两张一模一样的表,利用两表做连接,然后对得出的数据进行条件剔除,总的来说,这种方法也不是特别理想。
3.利用VLOOKUP函数
深度=VLOOKUP(D10,C1:I9,7,FALSE)+1
其中D10代表查找D列第10行的数据,C1:I9是指从第C列第1行到第I列第9行进行表范围查找,7代表是取第7列的值作为结构,FALSE代表的是精确匹配,最后加1是指在匹配行的深度基础上+1
结语
VLOOKUP函数是很有用的函数,尤其是对于一些具有父节点关系的数据,如果通过嵌套查询或者游标更新等方式都很困难的时候,不妨试试导出数据到Excel中,再利用VLOOKUP函数实现。