财务预测与估值建模之二:excel常用函数介绍
今天我们开始第二节课程的学习,为大家介绍一下使用EXCEL进行财务建模中常用的一些函数。函数可以说是EXCEL的精髓,是EXCEL真正威力的源泉。使用函数以及函数的组合你可以实现多种多样的计算,像逻辑判断、常见的一些统计计算以及财务计算等等。熟练掌握并灵活应用EXCEL函数,是EXCEL高手区别于EXCEL菜鸟的一个基本的特征。
我这里把财务建模中常用的EXCEL函数分为五类,分别是基础计算函数、逻辑判断函数、查找引用函数、统计分析函数以及财务函数。在这节课程里,我们主要关注除财务函数以外的其它四类函数,介绍它们的基本功能、使用方法以及技巧等等,在下节课程里我们再专门来讲解财务函数。
一、函数基本使用方法
在EXCEL中调用函数的方法很简单,只需要在单元格中输入一个等号,这时候就可以直接输入自己想要的函数了,比如说我们想对一列数据求和,我们就可以输入SUM,注意EXCEL函数是不区分大小写的,我们输入大写的SUM和小定的sum是完全一样的。当我们输入完成后,就可以看到一个函数列表,里面都是以SUM开头的函数,我们可以用向上或者向下的方向键进行选择,我们会看到一句简短的提示语,像SUM的提示语就是:“计算单元格区域中所有数值的和“,SUMIF的提示语是:“对满足条件的单元格求和”,看到这句提示语我们就可以知道这个函数大概是做什么的。
当选择到自己想要的函数后按TAB键,就可以选定这个函数,我们看到EXCEL自动输入了一个左括号,我们可以接下来输入函数的参数。我们可以看到SUM函数的参数列表里面有三个项目,分别用逗号隔开:第一个是NUMBER1,第二个是NUMBER2但是打上了一个中括号,表示这是一个可选参数,可以选择不输入。没有打中括号的像NUMBER1就是必选参数,必须要输入,这里的意思是SUM函数至少需要一个参数。第三个项目是一个省略号,表示SUM函数的参数数量不是固定的,可以根据求和的范围来决定参数的数量多少,但是这个参数数量仍然是有限制的,对于SUM函数,它的参数数量不能超过255个。如果没有省略号,那么这个函数的参数数量就是固定的,比如说IF函数就只能输入三个参数,其中后两个参数是可选的。注意还有一种特殊情况就是某些函数不需要参数,比如说NOW函数,可以显示现在的时间,这个函数就不需要参数,但是在输入的时候仍然需要打上括号,否则EXCEL会报错。
当我们的参数输入完毕后,敲回车键,Excel 将自动添加右括号,如果没有错误的话,计算结果就会显示在单元格里。我们可以选中单元格按F2键,就可以查看公式中引用的单元格,或者对公式进行修改。如果我们想退出编辑状态,可以按ESC键,这样可以避免一不小心修改了公式。有时候,我们可能不太了解某些函数的用法,这时候我们可以使用EXCEL的帮助功能,按F1快捷键,在弹出的搜索框里输入我们想要了解的函数,比如说我们输入IF,然后我们在搜索结果里选择“IF函数”,EXCEL帮助就会给出这个函数的一个非常详细的介绍,比如说函数的用途和说明、语法以及参数的意义,还有一些示例等等,看完这些我们一般都可以理解这些函数的基本用法,剩下的只是如何在实践过程中灵活应用的问题了。我建议大家在实际工作中要经常使用EXCEL的帮助功能,这样可以节省大家很多网上搜索以及请教别人的时间。
二、基础计算函数
好,我们前面讲了EXCEL函数的基本使用方法,下面我们来看下第一类常用函数——基础计算函数,基础计算函数可以实现一些基本的计算功能,比如对数据进行加总,找到数据中的最大值或最小值以及对数据进行四舍五入等等。我们这里主要介绍七个基础计算的函数,下面我一个一个来讲。
第一个基础计算函数是求和函数,我们前面已经简单提到了,它的函数名叫SUM,是英语单词summation的缩写。求和函数可以可以将单个值、单元格引用或是区域相加,或者将三者的组合相加。我们来看一个例子:我们可以直接在求和函数中输入数字,比如输入SUM(1,2)就可以对1和2求和,结果是3,这是直接对数字求和。需要注意的是,SUM函数要求参数数量不能超过255个,所以通过直接输入数字来求和是有限制的,我们一般不建议直接在求和函数里输入数值,而是应该把数字输入到单元格中,再对单元格引用来求和。第二个例子,我们可以对若干个非连续单元格进行求和,比如说这里的B5,B7和B9求和。第三种情况我们可以对某个区域求和,比如这里的B3到B12单元格,结果是55。
第二个基础计算函数实际上是在求和函数上衍生出来的,叫SUMPRODUCT函数,SUM是意思是求和,PRODUCT的意思是乘积,从名字上就可以看出来这个函数是对乘积进行求和。什么情况下,我们需要使用这个函数了?一个典型的例子是在计算贷款的利息的时候,比如我们这里有五笔借款,分别是100到500元,每笔借款的利率分别从3%至7%,那么我们如何计算总的利息支出?最先想到的方法就是用刚才讲的求和函数,用每笔借款乘以相应的利率计算出每笔借款的利息,然后再加总得到总的利息支出,这种情况下我们就需要额外设一个利息列。有没有更简单的方法了?我们可以用SUMPRODUCT函数,直接将借款与相应的利率相乘再求和,在函数里分别输入借款对应的区域B3到B7,以及利率对应的区域C3到C7,我们就可以直接计算出总的利息支出等于85,和之前求得的结果一样。这个函数在我们计算现金流的现值的时候同样可以运用,我们到时结合具体的例子再讲。
第三个和第四个函数分别是求最大值和求最小值的函数,我们放在一起来讲。MAX函数可以计算数据中数值的最大值,注意只能计算数值的最大值,如果数据里某一项不是数值,就会被忽略,MIN函数和它类似,可以求数据中数值的最小值。比如在这里的例子,数据中包含六个数值,一个文本,对B3到B9区域求最大值,结果是21,也就是数值的最大值,同样对这个区域求最小值,结果是1,ABC这个文本对结果没有影响。
第五个函数是COUNT函数,可以计算包含数字的单元格个数以及参数列表中数字的个数。这个例子里面有五项数据,大致看起来好像只有19和22.24两个是数值,但是需要注意的是在EXCEL里面日期也是一种数值,至于为什么日期也是一种数值,这个我们之后再讲。所以,在这里如果我们计算B3到B7单元格里数值的个数,结果就是会是三,而不是二。同样计算B5到B7单元格里数值的个数,结果就是一,因为只有22.24这一个数值。
第六个函数是ROUND函数,我们可以用这个函数将数字四舍五入到指定的位数。函数有两个参数,一个是想要四舍五入的数值,另一个是四舍五入合小数点后的位数。比如对于2.15,我们想保留一位小数,就把第二个参数设为一,结果是2.2;同样,2.149保留一位小数是2.1;而-1.475保留两位小数是-1.48。第七个函数是绝对值函数,可以用它求数值的绝对值,从而可以去掉数字的符号,这个功能在建模过程也经常用到。
三、逻辑判断函数
好,接下来我们来看第二类常用的建模函数——逻辑判断函数。
逻辑判断函数中的第一个函数就是IF函数,经常有人说,如果你只学一个EXCEL函数的话,那么这个函数应该是IF函数,这种说法可能有些夸张,但确实在某种程度上说明了IF函数的重要性。IF函数可以让单元格在不同的条件下显示不同的结果,它有三个参数,第一个参数是是我们想要的判断条件,这个参数是必需的,这个条件要不为真要不为假;第二个参数是条件为真时单元格显示的结果,可以是数字、文字或者公式等等;第三个参数是条件为假时单元格显示的结果,也可以是数字、文字或者公式等等。我们来看一个简单的例子:表格中显示了某个公司2016年到2018年三年的净利润情况,可以看到公司2016和2018年是盈利的,而2017年亏损了500万,我们想让EXCEL自动判断公司的盈亏情况,我们就可以在G4单元格输入这个公式,它的意思是说如果净利润大于0,那么显示“盈利”,如果小于0就显示亏损,然后G4和I4单元格就会显示盈利,而H4单元格会显示亏损。除开看公司的盈利情况,我们还可以根据公司是否盈利来计算它应该支付的股利,假定在这三年里公司的股利支付率都是30%,也就是净利润乘以30%就是当年应该支付的股利,但是如果公司的净利润是负的,直接相乘那么股利也就是负的了,这明显不合常理,在亏损的时候肯定就不需要支付股利了,相应的股利应该是零。所以我们需要在计算股利时用IF函数来做条件判断,如果净利润大于零,那么股利等于净利润乘以30%,如果净利润小于0,那么支付的股利为零,这也就是单元格G8里公式的意思。我们可以看到,使用这个公式计算,2017年应该支付的股利就是零元,这才符合常理。
有时候,单纯使用是或否这样的单次判断没法解决复杂的条件判断问题,需要用到多重判断,这时候就需要用到IF函数的嵌套,也就是IF函数里面还有IF函数,像套娃一样。EXCEL 2010里IF函数可以最多嵌套64层,当然如果套这么多层,公式会变得非常长,几乎没有人可以看得懂。这时候可以使用其它更合适的函数,像LOOKUP,VLOOKUP或者CHOOSE函数等等,这些函数我们在之后再讲,这里我们看一个IF函数嵌套的例子:比如说这里有五个分数,总分100分,如果分数小于60就是不及格,大于等于60小于80就是良好,大于等于80就是优秀,这种情况下我们怎么根据分数自动算出相应的评级?这时候就需要用到IF函数的嵌套,公式里先判断分数是否小于60,如果是那就是不及格;如果不是,那分两种情况,一种情况是小于80分,一种情况是大于等于80分,所以需要用IF函数再判断一次,在公式里输入如果小于80则为良好,其它的情况也就是大于等于80分的情况就是优秀。这里我们使用了一个两层嵌套的IF函数,如果判断条件更复杂,嵌套层数也会更多。
EXCEL也提供了一些其它函数,可以将IF函数和其它基础计算函数结合起来对数据进行分析,比如说COUNTIF函数可以计算满足特定条件的单元格的次数;SUMIF函数可以计算满足某些条件的数值的和。这些函数本质上只是IF函数和某些基础函数的结合,大家看一下帮助手册就可以很快学会使用了。
逻辑判断函数中第二种函数有两个,分别是AND函数和OR函数,两个函数都可以实现对多个条件判断的处理,我们这里放在一起讲。AND函数可以判断多个逻辑条件是否同时满足,如果都满足就为真,否则为假。OR函数可以判断多个逻辑条件是否至少有一个满足,如果至少有一个满足就为真,否则为假。下面我们看一个例子:这是一个假想的公司的销售奖金安排,公司有两个销售目标,一个是销售额目标,要达到10000元,另一个是销售客户目标,要达到20个,如果两个目标都达到了,那么奖金是销售额2%;如果两个目标中只有一个达到了,那么奖金是销售额的1.5%;如果两个目标都没有达到,那么没有奖金。
这时候为了计算每个销售员的奖金,就需要同时使用IF函数、AND函数和OR函数。我们可以看到单元格I13的公式比较长,我一项一项来解释。首先我们需要使用IF函数,第一个需要判断的条件是是否销售额和销售客户数量都达标了?这时候就需要用到AND函数,AND函数里有两个判断条件,一个是G13单元格的值要大于G2的值,也就是销售额要大于销售金额目标,另一个是H13单元格的值要大于G3的值,也就是销售客户数量要大于销售客户目标。如果这两个条件都达到,那么奖金等于销售额乘以G4单元格也就是一等奖的奖金比例。如果没有达到,那接下来需要判断销售额和销售客户是否有一个达标了?这时候就需要用到OR函数,OR函数里的两个判断条件与AND函数一样,只要两个目标中有一个达标的,OR函数就返回TRUE,那么奖金等于销售额乘以二等奖的奖金比例。如果OR函数返回的是FALSE,也就是说两个目标中一个也没有达到,那么奖金就为零。我们可以看到用这个公式计算五位销售员的奖金,A和D销售员两个目标都达到了,所以适用一等奖奖金比例,是销售额的2%;B和E销售员都达到了销售客户目标,但没有达到销售额目标,所以适用二等奖奖金比例,是销售额的1.5%;C销售员两个目标都没有达到,所以奖金是零。在实际工作中,涉及到多重条件判断时我们可以考虑用AND和OR函数,这样有时候可以减少IF函数的嵌套,而且会让公式的意义更加清楚。
好,最后我们来看一个比较简单但是经常会用到的逻辑判断函数,叫IFERROR函数。有时候,在财务建模中我们可以对某些预想到的错误预先处理,避免EXCEL显示错误值,导致结果非常难看。IFERROR函数有两个参数,第一个参数是必需的,通常就是你想要的计算结果,一般就是一个公式,如果公式计算没有错误,IFERROR函数就会显示这个公式的计算结果;第二个参数是如果计算结果有误,你想要显示的值。比如说这里的例子,有公司2016到2018年的营业收入和净利润数据,需要计算每年的净利润率,净利润率等于公司的净利润除以营业收入,但是我们看到2018年的营业收入是零,如果直接去除就会导致分母是零出现错误,就像I8单元格显示的那样,提示你分母不能是零。这种情况下我们就可以用IFERROR函数,如果计算没有错误就直接显示净利润率,如果计算有错误就显示一个横线,表示这个值不存在,这样的结果比显示一个错误要美观多了。
四、查找引用函数
好,上面我们讲完了逻辑判断函数,下面我们看下一类函数——查找引用函数。在财务建模的过程中,经常需要在一系列数据中找到指定的数据,比如在做情景分析的时候,我们会根据悲观、乐观等等不同的情景选择不同的预测假设,从而得到不同的预测数据,这时候就需要用到查找引用函数。
首先要介绍的查找引用函数有三个,分别是LOOKUP, VLOOKUP和HLOOKUP,三个函数基本属于同一类,使用方法也类似,所以这里一起讲。三个函数类似的地方是,都是从某一列或者某一行查找数据,然后返回数据对应的其他列或者行中的数据。这样听起来可能有些抽象,我们来看一个具体的例子:在最上面的表中,总共有十家企业,分别显示了它们的净利润率、资产负债率和净资产收益率;第二个表根据企业的资产负债率来对公司进行评级,如果公司的资产负债率小于50%,那么评级为A;资产负债率在50%到70%之间,评级为B;在70%至90%之间,评级为C;资产负债率大于90%,评级为D。最下面的表,我们从上面五家企业里打乱顺序随机选了五家企业,现在我们想知道这五家企业的资产负债率和对应的评级。这里我们分别使用LOOKUP和VLOOKUP函数实现,资产负债率一和评级一是用LOOKUP函数做的,资产负债率二和评级二是用VLOOKUP函数做的,之后我们可以看看两者的结果是否一致。
首先我们来看LOOKUP函数。LOOKUP函数有三个参数,第一个参数是想要查找的值,可以是数字、文本等等;第二个参数是想要查找的区域,区域只能是一行或者一列,不能是多行或多列。第三个参数是结果区域,也是单行或单列,而且必须和查找区域的大小相同。需要特别注意的是,对于LOOKUP函数,想要查找的区域必须是升序也就是从小到大排列的,否则查询结果会有问题。所以在查询前需要用EXCEL的排序功能对查询区域做升序排列。
在这个例子里面,如果我们想用LOOKUP函数查找企业对应的资产负债率,那我们想要查找的值就是F23到F27单元格,查找的区域是F3到F12单元格,结果区域是H3到H12单元格。首先,我们需要对查找区域进行升序排列,选择F3到F12区域,点排序与筛选,点升序,选择扩展选定区域,就可以对这个区域升序排列了。因为我之前已经对这个区域排过序了,所以没有变化。然后我们就可以正式使用LOOKUP函数了,在G23单元格输入公式,查找值输入F23,查找区域输入F3到F12,注意要切换成绝对引用,否则在公式往下填充的过程中会出错。结果区域输入H3到H12,同样要切换成绝对引用。然后我们就可以看到结果为31%,正是ZFGD公司的资产负债率。我们把公式往下拖动,就可以看到其它几家公司的资产负债率也会显示出来。
下一步,我们需要根据公司的资产负债率查找它对应的评级,问题在于资产负债率的评级是按照区间划分的,一个区间对应一个值,比如0%到50%区间对应的是A,50%到70%区间对应的是B等等。有的同学可能已经想起来了,这个例子我们之前讲过的用IF函数来判断分数是不及格、良好还是优秀那个例子是一样的,都是一个区间对应一个评级。区别在于分数的评级只有三个,不及格、良好和优秀,所以只需要两层IF函数嵌套就可以实现了,但是这个资产负债率的评级有四个,所以需要三个IF函数嵌套才能实现,这已经有些麻烦了,如果评级有上十个,那么IF函数的嵌套也会更复杂,公式会非常长,让人无法理解。对于这种情况,实际上可以用LOOKUP函数或者VLOOKUP更优雅的解决,这里要用到这两个查询函数的近似匹配或者叫模糊匹配功能。近似匹配对应的是精确匹配,精确匹配的意思很简单,就是必须要在查找区域里找到和查找值完全一样的值,才会返回结果,否则就返回错误值。近似匹配就不一样,如果在查找区域里没有找到和查找值完全一样的值,就返回小于查找值的数据中的最大值。但是近似匹配都有一个前提,就是查找区域必须是升序排列的,因为LOOKUP函数中只能进行近似匹配,所以查找区域必须要进行升序排列。像VLOOKUP函数可以进行精确匹配,在精确匹配的时候,查找区域就没必要做升序排列。
接着看我们的例子,想要找到资产负债率区间对应的评级,可以使用LOOKUP函数或者VLOOKUP函数的近似匹配功能。我们在I23单元格输入公式,查找值输入G23,也就是ZFGD公司的资产负债率;查找区域输入F16到F19单元格,也就是资产负债率评级区间的分界点,分别是0%、50%、70%和90%,因为查找区域已经做升序排列了,我们就不需要再做了;结果区域输入G16到G19,也就是资产负债率的评级结果。注意,查找区域和结果区域都要使用绝对引用。当LOOKUP函数在查找区域里查找ZFGD公司的资产负债率31%时,它找不到和31%完全一样的结果,所以只能选择查找区域中小于31%的最大值,也就是0%,那么对应的评级就是A。同样,对于OPZA公司,它的资产负债率是62%,查找区域里小于62%的最大值是50%,那么它对应的评级就是B,其他三家公司评级的计算过程也和这里一样。这里技巧的核心在于,我们必须要建一个升序排列的区间分界点表格,大家可以用类似的方式做一下我们在IF函数里讲的那个分数评级,它的区间分界点应该是那几个?怎么用LOOKUP函数来实现?
下面我们再简单介绍下VLOOKUP函数。VLOOKUP函数的参数有四个:第一个和LOOKUP函数一样,是想要查找的值;第二个参数是包含数据的区域,这个区域一般有多列,其中第一列必须是想要查找的列;第三个参数是结果列位于这个区域的第几列,查找列是第一列,从查找列开始从左往右数,数到结果列是第几列,这个参数就是几。比如说结果列在查找列的右侧第四列,那么这个参数就是四。第四个参数是一个可选参数,表示是查找时是使用近似匹配还是精确匹配,TRUE表示近似匹配,FALSE表示精确匹配,默认是近似匹配。
我们可以看出来,LOOKUP函数和VLOOKUP函数的区别有两点:一是指定查找列和结果列的方式不同,LOOKUP函数是直接指定,而VLOOKUP函数是先确定一个区域,区域的第一列就是查找列,然后通过指定区域里第几列的方式来指定结果列;第二是VLOOKUP函数既可以作近似匹配也可以精确匹配,而LOOKUP函数只能近似匹配,VLOOKUP函数在做精确匹配的时候不需要对查找列进行升序排列。
好,接下来让我们看看怎么用VLOOKUP函数来实现同样的功能。在H25单元格输入VLOOKUP函数,查找值是F25单元格,也就是企业名称;接下来要指定想要查找的区域,也就是F3到I12这个区域,注意使用绝对引用;因为资产负债率在这个区域的第3列,所以第三个参数是3;因为公司名没有重复,并且我们需要精确匹配,所以第四个参数是FALSE,表示使用精确匹配,可以看到使用LOOKUP和VLOOKUP函数的结果是一致的。再来看评级数据,同样对于J25单元格,查找值是H25单元格,查找区域是F16到G19区域,因为我们这里是区间查询,所以使用VLOOKUP函数默认的近似匹配,第四个参数可以省略。可以看到,评级二的结果和评级一样,证明VLOOKUP函数和LOOKUP函数的结果没有差异。
HLOOKUP函数的用法基本上和VLOOKUP函数是一样的,只不过由查找列、结果列变成了查找行、结果行,由于时间关系这里就不具体介绍了,大家看看EXCEL帮助里的说明就会明白。下面我们比较快的过一下剩下三个查找引用函数,分别是INDEX函数、MATCH函数和CHOOSE函数。这三个函数没有上面讲的三个LOOKUP函数那么常用,但都有自己比较擅长解决的问题。INDEX函数必须要和MATCH函数配合起来使用才能发挥最大的威力,两者结合在一起实现的功能和三个LOOKUP函数的功能是差不多的,但是为什么不用LOOKUP函数而要用INDEX和MATCH函数了,这主要是因为INDEX和MATCH函数把查找和引用功能分开了,MATCH函数负责查找,INDEX函数负责引用,而三个LOOKUP函数是把查找和引用放在一起的。所以在灵活性上,INDEX-MATCH函数的灵活性要高一些,可以实现三个LOOKUP函数实现不了或者实现起来很不方便的功能。
INDEX函数的参数有三个,第一个是引用的区域,可以是单行或单列,也可以是多行多列的区域;第二个是想要的数据在区域里的行数;第三个是参数是想要的数据在区域里的列数,结合行数和列数就可以准确定位想要的数据了。MATCH函数的参数也有三个,第一个参数是想要查找的值;第二个参数是想要搜索的单元格区域,注意必须是单行或单列的区域;第三个参数是匹配的类型,有三个选项,如果是1,则会查找小于或等于查找值的最大值,这时候查找区域必须升序排列,这实际上就是我们之前讲过的近似匹配;如果是0,就是精确匹配,查找区域可以按任何顺序排列;如果是-1,MATCH函数会查找大于或等于查找值的值,查找区域必须按降序排列。下面我们来看几个例子:
表格中显示了十家公司的注册地、注册资本、行业、市值和市盈率的数据。我们现在需要用市盈率数据去反向查找它对应的公司,这个功能用VLOOKUP函数就没有办法实现,因为VLOOKUP函数的查找列必须位于查找区域的第一列,但是这个问题中的查找列位于整个数据区域的最后一列,所以不能用VLOOKUP函数。同时,因为我们这里需要精确匹配,所以也不能用LOOKUP函数,因为LOOKUP函数只能做近似匹配。这种情况下,我们就只能用INDEX函数和MATCH函数配合来实现这个功能:在G16单元格的公式中,我们首先输入INDEX函数,第一个参数为结果列,也就是公司名称所在的列,也就是F3到F12区域;第二个参数要输入市盈率39.23所在的行号,这就需要用MATCH函数来查找,首先输入需要查找的值,也就是F16单元格,然后输入查找的区域,也就是K3到K12区域,最后输入参数0,表示是精确匹配,结果就会显示CMBK公司,再把公式往下复制,就可以看到其它几个市盈率所对应的公司。这里我们可以看到用INDEX和MATCH函数的组合可以实现VLOOKUP函数和LOOKUP函数都实现不了的功能。
第二个表格里,我们要知道这五个公司的行业、市值和市盈率数据,如果使用LOOKUP函数或者VLOOKUP函数,我们就需要每一列调用一次相应的函数,三列数据就需要查找三次,而每次查找实际上都是查找公司名称,然后返回的是同样的行号结果,如果结果列更多,比如有上百列,就需要查找上百次,这样的重复查找会大大降低效率,整个查询工作可能需要比较长的时间才能完成。这时候更好的做法是,我们把查找和引用的过程分开,通过一次查找获得公司所在的行号,然后剩下的数据就只需要引用之前查找到的行号结果就可以了,可以省去很多重复查找的时间。所以我们在例子中加入一列“行号”的辅助列,首先找到公司在查找区域中所对应的行,在G24单元格里使用MATCH函数,输入查找值、查找区域并选择精确匹配,就可以得到公司对应的行数。然后在行业、市值和市盈率列,使用INDEX函数并直接引用这里的行号,就可以得到公司对应的行业、市值和市盈率数据。这种情况下,由于只使用了一次查找,计算的效率可以得到很大的提高。
好, 最后我们再来看一下查找引用函数中的最后一个——CHOOSE函数,这个函数可以根据选择参数,选择某个数据或者区域。它的第一个参数就是选择参数,必须是1至254之间的数字,所以你的选项也不能超过254个;其它参数就是你需要选择的值。比如说,选择参数是1,就选择第一个值;选择参数是3,就选择第三个值,依次类推。在财务建模中做情景分析的时候,我们有时候要根据选择的情景来选择对应的假设,比如说现在假设有三种情景,乐观情况下销售增长率是10%、基本情况下销售增长率是8%、悲观情况下销售增长率是5%,上一年的销售收入是5000万元,根据不同情景计算明年的销售收入,这时候就可以使用CHOOSE函数。明年的销售收入等于去年的销售收入乘以1加上销售增长率,在G10单元格输入公式,销售增长率通过CHOOSE函数来选择,G9单元格就是我们选择的情景,当数值为1时,选择乐观情景,对应的销售增长率就是H3单元格的值;当数值为2时,选择基本情景,对应的销售增长率是H4单元格的值;当数值为3时,选择悲观情景,对应的销售增长率是H5单元格的值。当我们切换G9单元格的值时,G10单元格的值也会相应发生变化,这样就实现了一个简单的情景分析。
五、统计分析函数
好,上面我们讲完了查找引用函数,下面我们讲最后一类函数,财务建模中常用的统计分析函数,主要有六个,分别是计算平均值的AVERAGE函数、计算中位数的MEDIAN函数、计算方差的VAR函数、计算标准差的STDEV函数、计算协方差的COVARIANCE.P函数以及计算相关系数的CORREL函数。这六个函数可以解决我们在财务建模中涉及到的一些常见的统计分析问题,下面我们一个一个来讲:
首先是计算平均值和中位数的函数。在财务建模中我们有时候需要计算平均值,比如说在进行使用相对估值模型时,我们需要计算目标公司行业的平均估值水平,比如平均市盈率、平均市净率等等。中位数也一样,它和平均值都反映了数据的集中趋势,但中位数的好处在于它不受极端值的影响。所以在财务建模中一般会同时使用平均数与中位数,这样提供的参考更加全面,所以这们这里放在一起讲。AVERAGE函数的第一个参数是必需的,之后的参数是可选的,参数数量最多有255个,参数既可以是数值、也可以是单元格或单元格区域。MEDIAN函数的语法与参数与AVERAGE函数完全一样。下面我们看一个具体的例子:表格中有十家公司,分别列出了它们的市盈率、市净率和市销率,现在需要计算它们的平均值和中位数。这个问题比较简单,直接调用函数就可以了,在G13单元格调用AVERAGE函数,选定G2到G12区域,就可以算出十家公司的平均市盈率,再向右拖动就可以算出市净率和市销率。MEDIAN函数也一样,在G14单元格调用函数,选定G2到G12单元格区域,然后再向右填充,分别得到十家公司市盈率、市净率和市销率的中位数。
我们再来看看方差和标准差,方差和标准差一样,都可以反映数据相对于平均值的离散程度,标准差可以通过对方差开平方得到。在金融建模中,方差和标准差有很多应用的地方,比如说我们会收集一只股票的历史收益率数据,通过计算它的平均值来衡量这支股票的期望收益率,通过计算它的方差和标准差来衡量这支股票的风险。有了这些数据,我们可以计算某只股票收益率相对于市场收益率的贝塔系数,从而可以应用资本资产定价模型求出股票的权益成本。下面我们看一个具体的例子:表格中显示了从2019年5月10号到2019年6月6号这20天里浦发银行、万科A、神州高铁和贵州茅台四支股票的真实收益率数据,现在我们需要计算各支股票收益率的方差和标准差,这里我们直接调用计算方差和标准差的函数就可以了,计算方差的函数是VAR.P,参数选定G3到G22单元格,然后我们可以看到浦发银行股票收益率的方差是0.01%,同样可以计算出浦发银行股票收益率的标准差为0.85%。将公式向右复制,就可以计算出剩下三支股票收益率的方差和标准差,我们可以看到四支股票中浦发银行的方差和标准差最小,说明股票收益的波动性小,风险较低;而贵州茅台的方差和标准差最大,说明股票收益的波动性大,风险较高。
有时候我们也需要计算两只股票收益率之间的相关性,这主要通过两个指标衡量,一个是协方差、一个是相关系数。在这里,由于时间关系,两个指标的计算公式我们就不讲了,不知道的同学找一下相关的书籍看一下就知道了。协方差和相关系数都可以衡量相关性,两者的主要区别在于协方差会受到数据的量级的影响,如果数据本身的数据较大,那么算出来的协方差也会比较大;相关系数则不受数据本身的大小的影响,比如说我们把数据都乘以100,计算出来的相关系数仍然是一样的,而协方差则会发生变化。所以在实践中,我们衡量数据间的相关性更倾向于使用相关系数而不是协方差。相关系数一般处于-1和1之间,等于-1时表明数据之间完全负相关、等于1时表明数据之间完全正相关、等于0时表明数据之间无线性相关关系。下面我们来看看如何EXCEL计算数据之间的协方差和相关系数:比如在表格的例子中,我们想计算浦发银行和贵州茅台股票收益率之间的关系,我们可以直接调用计算协方差的函数COVARIANCE.P和计算相关系数的函数CORREL,然后选定浦发银行收益率数据,也就是G3到G22单元格,然后选定贵州茅台的收益率数据,也就是J3到J22单元格,就可以看到G25和G26单元格分别显示了两支股票收益率之间的协方差和相关系数,协方差是0.0059%,相关系数是0.310,这说明两支股票之间的相关性并不大,这也符合我们的常识,毕竟一支是银行股,一支是消费类股票,两个行业本身的相关性就不大。
统计分析函数我们在讲解计算公司的权益成本的时候还会用到,大家在这里先有一个初步的了解,在之后的课程里我们再讲解它们更多具体的应用。