zoukankan      html  css  js  c++  java
  • 程序员如何巧用Excel提高工作效率 第二篇

    之前写了一篇博客程序员如何巧用Excel提高工作效率,讲解了程序员在日常工作中如何利用Excel来提高工作效率,没想到收到很好的反馈,点赞量,评论量以及阅读量一度飙升为我的博客中Top 1,看来大家平时帮业务修改数据的场景很多啊,哈哈。

    好了,言归正传,本篇博客我们主要讲解下Excel中VLOOKUP函数的使用,相比于上一篇中的内容,个人觉得这个相对高级一些。

    1.使用背景

    为什么会使用到这个函数呢,背景是这样的,有两个系统,我们假设叫A系统,B系统,这两个系统都存储了供应商的信息并且和平相处很长时间,忽然有一天上班,就看到业务同学发的钉钉消息:

    业务:在不,我发现你们A系统存储的供应商名称不对啊

    我:举个例子

    业务:有个供应商A系统叫[联营]苏州食行生鲜电子商务有限公司,但是B系统叫苏州食行生鲜电子商务有限公司,类似的还有很多,基本上A系统都加上了[联营]这个前缀或者[联营]这个后缀

    我:那你的需求是?

    业务:我需要A系统里的供应商名称全部修改为和B系统一致,以B系统为准,并且现在A系统我需要供应商的联系人信息,这个数据B系统是有的,你也帮我一并初始化过来

    我:好吧,你说了算……

    2.使用方法

    按照上述的使用背景,业务提供了如下的Excel,这个Excel分3个Sheet,分别是:A系统供应商数据,B系统供应商数据,B系统供应商联系人数据,具体的数据如下所示:

    我们的最终目的是拼接一个Update语句来更新A系统的供应商数据,然后批量生成,这样就可以批量更新A系统的供应商数据了。

    基于此目的,我们拆分步骤如下:

    1. 把第2个Sheet和第3个Sheet中的数据匹配到第一个Sheet中,匹配条件是列:B系统供应商编码
    2. 在第一个Sheet中拼接Update语句(拼接方法可参考之前的博客程序员如何巧用Excel提高工作效率)
    3. 批量生成Update语句

    第一步我们就需要用到VLOOKUP函数了,以下为匹配方法:

    此时我们已经将需要的数据都匹配到了第一个Sheet中:

    接下来我们需要的是拼接Update语句,方法如下:

    最终批量生成的语句如下,完美完成:

    UPDATE supplier_seller
    SET supplier_seller_name = '苏州食行生鲜电子商务有限公司',
        contact_name='张洪良',
        contact_email='zhanghongliang@163.com',
        contact_mobile='13758494357'
    WHERE disabled = 0
      AND supplier_seller_code = 'A000001';
    
    UPDATE supplier_seller
    SET supplier_seller_name = '北京每日优鲜电子商务有限公司',
        contact_name='曾斌',
        contact_email='zengbin@163.com',
        contact_mobile='15601637452'
    WHERE disabled = 0
      AND supplier_seller_code = 'A000002';
    

    3.常见问题

    在这个过程中,可能会出现以下情况,明明数据存在,匹配完成却显示#N/A(注意:数据不存在也会显示#N/A):

    出现的原因可能有以下两种:

    1.匹配的两列的单元格格式不同,比如第一个Sheet中的单元格格式是常规,第二个Sheet里的单元格格式是文本,解决方案就是将两列的单元格格式修改为一样:

    2.匹配列不在第一列,如我们调整下第2个Sheet中两列的位置

    因此建议将匹配列放在第一列,避免出现问题排查浪费时间。

    原创不易,如果觉得文章能学到东西的话,欢迎点个赞、评个论、关个注,这是我坚持写作的最大动力。

    如果有兴趣,欢迎添加我的微信:zwwhnly,等你来聊技术、职场、工作等话题(PS:我是一名奋斗在上海的程序员)。

  • 相关阅读:
    日本自然科学研究机构生理学研究所:研究显示古典音乐有助治疗突发性耳聋(转)
    苹果新专利:视频通话不怕掉帧(转)
    三步解决EntityFramework Code First中的MissingMethodException错误
    Unity3D去掉全屏时的屏幕黑边
    WindowsPhone-GameBoy模拟器开发六--[转]指令系统实现必读:补码
    WindowsPhone-GameBoy模拟器开发五--使用XNA初略实现Gameboy显示系统
    WindowsPhone-GameBoy模拟器开发四--Gameboy显示系统分析
    python继承初始化对象实例时 TypeError: module() takes at most 2 arguments (3 given)
    python __getattr__和__getattribute__ 区别
    python – 将列表拆分为较小的列表
  • 原文地址:https://www.cnblogs.com/zwwhnly/p/10735759.html
Copyright © 2011-2022 走看看