• Excel实战-帮业务人员做道Excel题


    一、前言

    今天来将一个比较有趣且轻松的(话)题。
    是前几天遇到的一个需求,还是挺有意思的,所以记录一下。
    不知道作为职场人,大家对Excel的掌握程度如何,觉得Excel这个工具的难度和应用程度如何?
    我觉得Excel是一个可拓展空间特别大的工具,一个Excel的数据需求,你可以有很多种办法通过Excel的公式/辅助列实现。

    但是一般作为小白,开始学习它,可能又会特别的“难受”。反正我当年读大学的时候,第一次接触到办公三件套,学的那个叫痛苦!特别是Excel,许久不能理解这个工具是怎么使用的,现在总结起来应该有那么两点,一个是没有应用场景,一个是没有工具思维。后来为了顺利通过计算机一级,曾在图书馆泡了很长一段时间,研究这个玩意。在经过一段时间的研究和实战之后,逐渐开窍了(其实就是找应用场景,跟着工具书给的数据,加上需求进行训练,然后不断思考为什么这么做)。
    但是不要盲目拾起工具书,首先你需要有一个坚定的信念和可执行的计划,最好是在工作或生活中有应用场景。因为我见过很多Excel工具书买了一堆,结果也没学成案例。
    往回看,还是很感谢那段时光的磨砺。在掌握了Excel之后,再往后学什么tableau、powerBI的时候,似乎都有一种底层的工具思维支撑着,许些东西是万变不离其宗,可以进行举一反三,剩下的就是根据新工具的新规则加以学习。

    念了这么多,下面开始来看看问题吧~

    二、问题

    我梳理一下,将整个场景转化为一到Excel应用题,大致如下:

    • 表1,存放着已加企业号1为好友的用户数据;
    • 表2,存放着未加企业号1为好友的用户数据;
    • 表3,是目标用户的名单,存放的是加了其他企业号为好友的用户数据。
    • 表1和表2的数据没有相交;
    • 表3的用户可能在表1上,可能在表2上。

    为了更好的理解,我简化了一下数据,做了一个迷你数据集,具体如下:
    image.png

    • 表1有1001~1010共10位用户,都是添加企业号1。

    image.png

    • 表2有1011~1020共10位用户,都没有添加企业号1。

    image.png

    • 表3有1005~1014共10位用户,需要匹配是否添加企业号1和付款总金额。

    她的需求就是判断在表3上的用户名单是否添加了企业号1,同时需要从表1和表2获取用户的付款总金额整合到表3上。(注意:原表单比这个要复杂很多,有几千行几十列,难以通过肉眼一个个看,我只是提取了关键的信息出来讲解。)
    作为读者,如果是你,你会怎么做呢?

    2.1 解法一

    先说说她的做法,在表3编写vlookup()函数,并嵌套一层if()函数,查询用户在表1是否匹配上,匹配上返回,匹配不上返回,但是匹配之后出现了**#N/A**,不知道为什么,也不知道怎么办,于是来找我帮忙解决。

    B2=IF(VLOOKUP(A2,'表1-企业号1'!A:A,1,0)>0,"是","否")
    
    • 1

    image.png

    先解释一下原因,因为vlookup()匹配值的时候,如果匹配不上会返回#N/A值,if()函数没法处理#N/A值,如果要处理#N/A值,可以加一层判断,使用ifearror()捕获错误值,具体公式如下:

    B2=IFERROR(IF(VLOOKUP(A2,'表1-企业号1'!A:A,1,0)>0,"是","否"),"否")
    
    • 1

    image.png

    这可以解决第一个需求,但是第二个需求呢?
    沿着她的思路,继续前行——需要分别从两个表中取金额,分步去做的话,效率会很低——需要分别匹配两个表,然后再选择有值的行,可以直接编写公式,或者通过新建两个列来辅助完成。
    直接编辑公式的方法参考:

    C2=IFERROR(VLOOKUP(A3,'表1-企业号1'!A:B,2,0),VLOOKUP(A3,'表2-非企业号1'!A:B,2,0))
    
    • 1

    image.png
    通过两个新建列来辅助完成的方法参考:

    # 其实和直接编写公式差不多,只不过通过里面的两个值拆开,变成两列,更方便观察而已,主要是在表1和表2有重复的情况下回比较实用
    D2=VLOOKUP(A2,'表1-企业号1'!A:B,2,0)
    E2=VLOOKUP(A2,'表2-非企业号1'!A:B,2,0)
    C2=IFERROR(D2,E2)
    
    • 1
    • 2
    • 3
    • 4

    image.png
    在一顿操作下来,感觉有点小题大做了。

    2.2 解法二

    换个思路,既然是要在两个表中匹配数据,而且维度都一样,为什么不一开始就将数据整合到同一个表中呢?
    这样子可以将公式的难度降到只有vlookup,大大提高效率!
    具体推荐操作如下:
    为了保留原始数据,这里复制一个【表1-企业号1】的副本,重命名为【表1】,再将表2的数据的数据复制粘贴到表1底下(追加到第12~21行),为了区分数据,新增列D和列E,将数据源处理规整,然后直接在表3写两个vlookup()即可搞定!
    image.png

    B2=VLOOKUP(A2,1!A:E,5,0)
    C2=VLOOKUP(A2,1!A:B,2,0)
    
    • 1
    • 2

    image.png

    三、总结

    其实这个没有标准答案,达成最终的目的可以有很多种方式,毕竟Excel的灵活性还是很高,功能很强大的。这里只是讲了两种解决逻辑,直接通过复杂的公式得到最终的结果也是可以的,但我更倾向于建设好底层的数据集,然后再进行简单的公式操作。
    在业务上的体现可能就是根据业务的逻辑搭建一个或者一套业务宽表,将业务逻辑都写到宽表里,把相关数据都整上去,方便后续直接取数,提高整体操作效率。当然,这个业务需要是一个比较稳定的业务。

    传送门:相关数据集下载

  • 相关阅读:
    OLED12864(SSD1306)驱动代码
    开源云原生平台对比 KubeSphere vs Rainbond
    Kafka系列之:深入理解Kafka Connect REST API
    NetApp EF 系列全闪存阵列——性能极佳,性价比优势突出
    使用第三方账号认证(番外):向钉钉用户推送通知
    第五章:数组
    如何安装Node.js? 创建Vue脚手架
    PHP多语言代入电商平台api接口采集拼多多根据ID获取商品详情原数据示例
    SpringMVC基于注解使用:JSON处理
    ubuntu20.04 vins-fusion 运行记录
  • 原文地址:https://blog.csdn.net/qq_45476428/article/details/126133466