如何在Excel中少犯二(I)
作者:何明科
链接:https://zhuanlan.zhihu.com/p/23472480
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
收到不少建议,要求开知乎Live来谈谈Excel。然而考虑到知识储备有限,还是先写文章来满足大家的需求,同时从特别窄的话题开始:“如何在Excel中少犯二”。从这个话题开始的理由特别简单:首先,时常在别人的Excel数据模型中发现各种细小错误,哪怕作者花费再多的时间把图表搞得再精美,顿时对整个模型的结论产生怀疑;其次,Excel数据模型是经常要在现场分享并不断调试数据,经常看见作者手忙脚乱得更改输入和公式,忙中经常出错。
巴菲特曾说,犯错少就是成功。特别是那些重大而简单的弱智错误。这个理论套用到Excel做数据模型上面,一样成立。对于Excel这种人人都会的工具,少犯二的目标看似简单。然而,量变产生质变,当成千上万的数据堆积在一起,同时带来千丝万缕的函数关系,少犯二就会成为一个高大上的目标。如果不信,可以试试从1开始写数字写到600,能否保证一字不差(这是一个经典的街头骗局)。
因此在Excel中少犯二并不简单,如同要做到如何写好程序一样,需要引入一套方法论,在下面分步骤列出。

第一层:提升输入质量
通过使用“数据有效性”功能,减少输入的错误,设置输入的有效性检查(比如:手机号码是11位等等),尽量避免"Garbage In, Garge Out"。
Excel数据模型中,存在不同类型的数据:常数、可调参数、中间结果、最终结果等等。不少的错误发生在混淆各种类型的数据或者更改了不能调整的中间结果而污染最终结果。因此可以考虑对不同的数据,用颜色或者worksheet进行区隔,下图左方就是利用颜色标注不同的数据:有些是供修改的,有些是最后结果及中间过程而不能修改。这些措施都是为了在模型的制作过程以及调试过程中,避免误改误删数据。如果要想做到极致,还可以使用下图右方的方法,直接利用“保护工作表”功能,对不能修改的数据进行保护。

另外,对于一些经常使用的输入区域(比如,A1:A299),往往反复出现在Sum或者Vlookup等函数中,可以考虑将它们定义成变量,并可以在“名称管理器”中进行修改、增加和删除等管理。反复使用的时候就会非常方便,比如:=Vlookup(A1,data,2,false)这种简单的写法。

第二层,提升输出质量和增加输出维度
不少人在用Excel输出结果的时候,往往就事论事,把输出局限在较小的范围,不仅容易忽略错误,而且会失去多个视角。但如果能够在现有输出结果的基础扩展审视输出的维度,就能获得更全息的视角。以财务三张报表而言,当然可以妥妥得输出经典的报表格式,但如果能够多计算一些财务指标并放在合适的位置(如下图中所示的EBIDTA、Cash flow from operation、EBIDA/Interest Expenses等等),不仅可以部分校验运算过程,还能从多个维度反应企业的财务状况,当然也更容易发现可能存在的计算误差,从而提升输出的质量。
第三层,检验运算过程
最简单粗暴的方式,利用函数框中对输入不同颜色的标注,对运算过程及输入参数进行检查,看是否达到预期或者有犯二的差错。

升级一些,可通过“追踪引用/从属单元格”,对运算过程进行检查,尽可能避免公式运算中输入参数的犯二。

再升级一些,可以对一些关键指标以及核心等式就行复检。比如对于财务报表中最基础的等式“资产=负债+权益”,在做Financial Modeling的过程中,都要设置专门的一行进行检查,类似于化学方程式的配平检查。
(未完待续)
如何在Excel中少犯二(I)的更多相关文章
- 如何在Excel中通过VBA快速查找多列重复的值
今天项目组的一个同事问我如何快速的找到一个Excel中第3列和第5列的值完全重复的值,我想了想虽然Excel中自带查找重复值的功能,但是好像只能对同一列进行比较,所以就写了一个VBA进行处理,VBA非 ...
- [VBA]用一个简单例子说明如何在Excel中自定义函数
Excel中的函数无疑是强大的,但是再强大的战士也有他脆弱的脚后跟[1].这两天在使用Excel的时候遇到了一个需求,要在某一个单元格里面自动计算今天是星期几(如显示 Today is Tuesday ...
- 如何在Excel中提取小数点后面的数字?
Excel中,如果某个单元格中包含一个带小数,要用公式提取该数值小数点后面的数字,例如A1单元格中包含一个数值“59178.68”,在B1单元格中输入下面的公式: =RIGHT(A1,LEN(A1)- ...
- C#/VB.NET 如何在Excel中使用条件格式设置交替行颜色
说起高亮数据行,不让人想起了交替颜色行,有的人把交替颜色行也都设置成高亮,不仅不美观,而且对阅读还是个干扰.隔行交替的颜色是为了阅读不串行,这些行只是环境,数据才是主体.那么如何通过C#/VB.NET ...
- 如何在Excel中启用宏?
OFFICE2003版本中启用宏的方法: 1.首先打开EXCEL应用程序. 2.点击上方的"工具"--"宏"--"安全性" 3.在" ...
- 如何在EXCEL中找出第一列中不包含的第二列数据
1.找出第一列中不包含的第二列数据:=IFERROR(VLOOKUP(A:A,B:B,1,0),"无") 2.A列相同,B列相加:=SUMIF(G:G,G1,J:J)
- 如何在excel中把汉字转换成拼音
---恢复内容开始--- 1.启动Excel 2003(其它版本请仿照操作),打开相应的工作表: 2 2.执行“工具→宏→Visual Basic编辑器”命令(或者直接按“Alt+F11”组合键),进 ...
- EXCEL-如何在excel中对图片进行批量排版
新建EXCEL->导入图片->如果每张图高度为33个单元格,共计10张图,那么将最后边的那张图(即正对着你的那一张)剪切粘贴到33*9行第一个单元格处->按F5定位"对象& ...
- Azure DevOps Server(TFS): 在Excel中解除服务器同步
通过Azure DevOps Server 提供与Excel集成的功能,用户可以非常便捷地使用Excel,实现工作项数据的同步. 对于需要批量处理数据.离线工作.制作临时报表的用户来说,这个功能必定成 ...
随机推荐
- Linux网络管理之net-tools VS iproute2
查看网卡及IP ifconfig ip link [show] --------- ifconfig -a ip addr show 激活和停止网络接口 ifconfig eth0 up/down i ...
- scip习题(1) scheme和c实现的对比
习题1.3 定义一个过程,它以三个数为参数,返回其中较大的两个数的平方和. (Define a procedure thats three numbers as argument and return ...
- angular-ui-bootstrap插件API - Pager
Pager: 案例 <!DOCTYPE html> <html lang="en" ng-app="myApp"> <head&g ...
- linux 下查看cpu是几核的
几个cpu more /proc/cpuinfo |grep "physical id"|uniq|wc -l 每个cpu是几核(假设cpu配置相同) more /proc/cpu ...
- 在vim编辑器中,删除操作
我这里在编辑一个很大的文件,有几万行,都是文件名sheetid, 中间有很多空行,我现在要做的事情就有要把这个文件中的空行都删除掉,这个本来想在ultraedit里面完成的,结果弄了好半天都没有搞定, ...
- Beego学习笔记——Logs
日志处理 这是一个用来处理日志的库,它的设计思路来自于database/sql,目前支持的引擎有file.console.net.smtp,可以通过如下方式进行安装: go get github.co ...
- bootstrap的总结1 - 网格系统
1.Bootstrap 网格系统 1)下表总结了 Bootstrap 网格系统如何跨多个设备工作: 2)Bootstrap 网格的基本结构 <div class="container& ...
- SAP HANA 是什么?
HANA(High-Performance Analytic Appliance)高性能分析设备 HANA是一个软硬件结合体,提供高性能的数据查询功能,用户可以直接对大量实时业务数据进行查询和分析,而 ...
- C++友元
通过friend关键字,我们可以将不属于当前类的一个函数在当前类中加以声明,该函数便可以成为当前类的友元函数. 例1: #include<iostream>using namespace ...
- URL中文参数乱码的一个解决办法
浏览器对有中文参数的url大部分都用utf-8编码,但我也曾经遇见过用GB2312编码的:如果遇见这样情况,那么接受到的参数就会出现乱码.乱码情况视服务器解码方式,Asp.Net网站一般默认为ut ...