表格不规范,表妹两行泪。报销统计本是小事,但是由于报销的科目都写在了同一个单元格中,当统计的妹子需要根据填写的内容拆分出每个人的报销科目时,就悲催了。
还好这是大厂,技术大咖比比皆是,经码农小哥稍一点拨,统计这种奇葩表格也手到擒来。
案例:某大厂按不同的加班时长,规定依次可以报销晚餐、下班车费和第二天的上班车费,午餐按规定都可以报销。详细规则就不举例了,感兴趣的同学可以搜索一下各大厂的规定,不一而足。
下图 1 是该厂员工某一天的报销科目表,要求按 B 列的描述,分别在 C 至 F 列中需要报销的单元格中打 √。效果如下图 2 所示。
解决方案:
1. 要显示 √ 号,可以通过字体设置,也可以直接复制一个 √,此处我们就直接插入符号用于复制。
有关如何通过设置字体显示 √ 的方式,请参阅 Excel 萌娃作业辅导进阶版 - 防猜答案,全部答完才阅卷。
选中任意空白单元格 --> 选择菜单栏的“插入”-->“符号”-->“符号”
2. 在弹出的对话框中找到“√”号 --> 点击“插入”
接下来在公式中需要用到“√”符号的时候,就可以从这个单元格中复制。
3. 在 C2 单元格中输入以下公式 --> 向下向右拖动复制公式:
=IF(COUNTIF($B2,"*"&INDIRECT(address(1,COLUMN(C1),2))&"*"),"√","")
公式释义:
- ADDRESS(1,COLUMN(C1),2):
- address 函数的作用是根据指定行号和列号获得工作表中的某个单元格的地址;
- 语法为 address(行号,列号,引用类型);
- 这里的参数表示:第 1 行;第 COLUMN(C1) 列,即第 3 列;参数 2 表示绝对行号,相对列标;
- 这段公式返回的结果为“C$1”
- INDIRECT(...):引用上述单元格 C$1 的地址,获取该单元格的内容
- COUNTIF($B2,"*"&...&"*"):在上述单元格内容前后加通配符“*”,并用 countif 函数与 B2 单元格模糊匹配,根据匹配与否,会得到一个 1 或 0 的值
- 最后用 if 函数判断,为 1 就打 √,为 0 则留空
4. 辅助单元格中的“√”用完就可以删掉了,以下就是最终结果。
很多同学会觉得 Excel 单个案例讲解有些碎片化,初学者未必能完全理解和掌握。不少同学都希望有一套完整的图文教学,从最基础的概念开始,一步步由简入繁、从入门到精通,系统化地讲解 Excel 的各个知识点。
现在终于有了,以下专栏,从最基础的操作和概念讲起,用生动、有趣的案例带大家逐一掌握 Excel 的操作技巧、快捷键大全、函数公式、数据透视表、图表、打印技巧等……学完全本,你也能成为 Excel 高手。
,