因为工作的关系,大部分程序员都比较少接触Excel,一旦遇到和Excel相关的问题可能第一反应是用code解决。其实,如果数据已经在Excel里面,是可以很容易用Excel本身的功能解决的。另外,如果熟悉Excel的公式结构,有些场景下还可以借助Excel来批量创建程序代码。本文用几个案例来向大家展示这方面的技巧。
Excel 这个电子表格软件的主力用户群体是财务、HR 以及各部门需要处理和分析数据的信息工作者。因为工作的关系,我和表哥表姐表弟表妹打的交道很多。于是我经常听到他们的吐槽:
“我们公司的IT连VLOOKUP都不会”
“我就想把二维表转一维表,我BF居然说要等他有空敲代码才行”
在他们的心里,专业CS出身的程序员们应该是通吃所有软件问题的,包括且不限于Excel。
但这明显属于误解,因为大部分程序员平时工作中与 Excel 很少有交集,不会 VLOOKUP而且凡事都想撸代码解决是正常现象。程序员是信息时代的王者,所谓没有什么事情是一行代码搞不定的,如果不行,那就再写几行。
我也有很多程序猿和攻城狮朋友,偶尔会帮他们解决 Excel 方面的小问题。我一直有一个观点,任何人这辈子都一定会遇上 Excel,提前稍微了解一下,点亮这棵技能树,是很有价值的。况且,对于有深厚功底的程序员来说,学 Excel 的速度肯定是普通人的10倍。下面,我就用几个例子来分享一下,哪怕是程序员也可以借助 Excel 提高拔剑的速度!
拼接 SQL 条件语句
比如业务部门冷不丁发给你一张表格,让你在后台把这些数据处理一下。
这是个临时任务,你需要写一条SQL语句,无论是 UPDATE 还是 DELETE,都需要条件语句,这几十个数据怎么快速写成条件语句呢?
先说重点:如果数据已经在 Excel 里面了,你要坚信 Excel 就是最有办法最省力的工具。
我们可以在B2写入公式:
=B1&","&"'"&A2&"'"
双击B2右下角的填充柄,自动复制公式到整列。
最后直接复制B25单元格,粘贴到你的SQL编辑器里面,稍微编辑一下,就大功告成啦。
图片
‘&’在 Excel 公式里用于拼接字符串、数值或单元格。在本例的拼接过程中,使用的是单引号。如果在某些编程语言中需要拼接出双引号的效果,可以用下面的公式:
=B1&","&""""&A2&""""
SQL 连续处理多张数据表
有些数据库因为使用了分表技术,同一类数据按既定规则保存在了某一张数据表中,如果偶尔需要按条件处理一个数据,就必须遍历所有的表。
比如,现在有device_list_0到device_list_9 都用于存储设备相关信息,如果临时要删除device_no为78262170fa33 的记录,事先不知道这条记录具体在哪张表,一个简单的方法就是直接每张表都删除一次。此时,可以借助 Excel 批量构造 SQL 语句。
打开Excel,在A1单元格写入公式:
= "'device_list_"&ROW()-1&"'"
在B1单元格写入公式:
="delete from "&A1&" where 'device_no' = '78262170fa33';"
这样,第一条语句就完成了。
选中A1:B1,往下复制公式到 A10:B10,就得到了全部所需的 SQL 语句!
利用这样的拼接思路,可以方便的完成各种程序语言里面的“重复代码”,大家可以根据实际情况灵活处理。
处理重复记录
在开发和运维过程中,不可避免的要面对重复数据,虽然始作俑者不是自己,但需要加班处理的多半是自己。
比如业务部门提供的数据表中,device_no 可能有重复的,这些重复还不能简单的处理掉,得先标记出来再人肉核对。
重复一遍重要的话:如果数据已经在 Excel 里面了,你要坚信 Excel 就是最有办法最省力的工具。
面对这种情况,只需要先选中数据表的任意单元格,然后单击【开始】选项卡下面的【条件格式】→【突出显示单元格规则】→【重复值】就能解决。
嗯,然后所有的重复的值就被标记出来了。
现在右击B2,也就是第一个被标记的单元格,在弹出的快捷菜单中单击【筛选】→【按所选单元格的颜色筛选】。
这样就筛选出了所有的重复记录。
此外,Excel还提供了“删除重复项”功能可以直接删除重复记录,也可以使用 COUNTIF 函数排除第1次之后的重复项或者最后一次之前的重复项,都非常方便。
分析与重组数据
在Excel中,使用“分列”功能或者文本函数可以将字符串的内容分拆到多个单元格中。从Excel 2013开始,更智能的“快速填充”功能出现了。
以下表为例。
如果希望从B、C列中将主型号和发布年份分拆到D、E列中,可以这么操作:
在D2单元格中输入FSA,选中D3单元格,按
在E3单元格中输入2016,选中E3单元格,按
需要的信息瞬间就拆分出来了。
假设新型号的命名规则是城市编码-主型号-年,可以在F2单元格中输入025-FSA-2016,然后选中F3单元格,按
注意,刚才的分拆操作对于计算新型号不是必须的。
总结
这篇文章主要介绍了如何借助 Excel 快速处理一些数据问题,帮助程序员提升Excel 数据能力。用程序员的话来说,能用现成的轮子就用现成的,没用必要重新造轮子。既然数据在 Excel 里面,而 Excel 已经有了无数的轮子,我们为什么不用呢?
每个人遇到问题都会优先使用自己最熟悉的工具来处理,因为这样风险最低,效率最高。但实际上每种工具都有自己的优势和适用场景,所以我们不要有局限性,甚至有“鄙视”情节,多了解一些工具可以提升我们的面对各种问题的综合应对能力。
以上内容基于我个人的经验,对大家算是抛砖引玉吧。我相信也有很多程序员的 Excel 水平比我厉害的多,希望你们也来分享一些秘技!
微软最有价值专家(MVP)
微软最有价值专家是微软公司授予第三方技术专业人士的一个全球奖项。28年来,世界各地的技术社区领导者,因其在线上和线下的技术社区中分享专业知识和经验而获得此奖项。
MVP是经过严格挑选的专家团队,他们代表着技术最精湛且最具智慧的人,是对社区投入极大的热情并乐于助人的专家。MVP致力于通过演讲、论坛问答、创建网站、撰写博客、分享视频、开源项目、组织会议等方式来帮助他人,并最大程度地帮助微软技术社区用户使用Microsoft技术。
更多详情请登录官方网站,微软MVP,期待你加入