zoukankan      html  css  js  c++  java
  • Excel 中 VLOOKUP() 函数小结

    应用场景:

    数据仓库上游源系统的数据库表变更,现在需要拆分一部分数据出来,单独放到一张新表中。假设原表为A,新表为B,B表和A表结构大部分一样,只有字段的前缀不同,那么我们如何找出到底有哪些字段不同呢?显然,如果A表只有10个字段,B表少了2个字段,那么我们很容易找出来,用眼睛看就行了。如果A表有200个字段,B表有195个字段,那怎么办呢?

    思路:现在,现在用眼睛看是不行的。我们可以这样做,通过主键字段来进行查找(主键先进行预处理,截取前缀后面的部分),使用VLOOKUP来找出每个字段的不同。那么,VLOOKUP如何使用呢?这就触及到我的知识盲区了。作为一个几乎近10年不用Excel的程序猿,作为一个8年的JAVA程序猿,算了不吐槽了.....    翻一翻我自己的技术栈,劳资现在竟然在搞数据仓库,你能信?

    基础一:利用VLOOKUP函数返回班级名称

    现在我举个栗子:利用VLOOKUP函数返回班级名称。

    假设红色方框中部分(I1~I12)原先无值,我们如何批量的从左侧部分(A1~D12)通过学号来补全这部分呢?

    可以这样做:先用VLOOKUP求出I1的值,然后往下拖动复制,这样就能补全全部的值了。那么,如何先补全I1的值呢?

    1. 选中I1,输入=VLOOKUP,Excel会自动提示,如图所示:

    2. VLOOKUP参数:lookup_value 表示用哪部分查找、table_array表示查找的区域(我们可以理解为一个二维数组)、

                                    col_index_num要查找的信息在二维数组水平偏移量(就是在这个数组中那一列),最后一列可以自己看提示(近似还是精确)

    3.该例子中,最后的输入是:

    猛一看,好像是对的,但是你向下拖动复制的时候,看看结果:

    看一看,是不是有很多没有找到?原因在哪?我们看看I5的函数表达式,A5:D16?什么鬼?是不是Excel太自作聪明了.... 看来我们要给它限定死区域才行。看看这样写:

    这次我们用了绝对地址,用$符给限定死,F5是可以根据选中行的不同自动累加,但是$A$1:$D$12就不会再变了,我们会一直在这个区域查找。所以,现在用VLOOKUP找到I1后,我们直接往下拖动复制就可以了。

    基础二:利用vlookup返回多列数据

    如果我们现在只有学号,我要补全姓名、性别、班级呢?

    聪明的你可能会觉得这很简单,我重复写3次vlookup不就行了吗?恩,你很聪明,那么如果我有100个属性都要补全你,所以你准备写100次?有没有觉得自己智障?

    如何才能不做智障?顺便地,我们把题目再复杂化一下:

    我们看看规律VLOOKUP($F14,$B$1:$E$12,COLUMN(C1)-1,FALSE)。

    column()函数返回列数,但是函数要的不是这个,要的是在二维数组中水平偏移量,所以减1才是偏移量(第二列);

    剩下的应该不用说了吧,自己体会~~~

    展望:

    下一次介绍Excel中的字符串截取。

  • 相关阅读:
    [转]数据库表分割技术:水平分割、垂直分割、库表散列
    [转]Oracle 11g RAC SCAN ip的原理及配置
    [转]Oracle 11g R2 RAC高可用连接特性 – SCAN详解
    [转]Redis之(一)初识Redis
    Oracle笔记
    weblogic新增域并进行Jconsole监听
    Geth命令用法-参数详解 and 以太坊源码文件目录
    python闭包,看不懂请揍我
    MPT树详解
    RLP(转发注明出处)
  • 原文地址:https://www.cnblogs.com/xuanxufeng/p/9697397.html
Copyright © 2011-2022 走看看