ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E文精选 > 操作与技巧 > 轻松掌控模拟运算表

轻松掌控模拟运算表

作者:绿色风 分类: 时间:2022-08-17 浏览:89
楼主
gouweicao78
【下载附件】
轻松掌控模拟运算表.rar


      也许对大多数人来说,模拟运算表是Excel的一项很陌生的功能,即便是高手们也常常认为这个功能逐步边缘化,很少用它来解决问题。目前,社区、网络上能找到的教程,基本都是计算贷款利率、九九乘法表、鸡兔同笼这些问题,如果只是解决这些问题会有很多种不同的方法可以轻松胜任,读者往往难以理解为什么要费那么老鼻子劲儿去学、学了又不太容易懂。下面,我从几个案例由浅入深来讲解一下这项有些“莫名其妙”的功能:
 

一、版本变异
2003版的“模拟运算表”功能,在【数据】菜单下。“单变量求解”在【工具】菜单下。
2007版的真正的“模拟运算表”在【数据】功能区【数据工具】组【假设分析】下的“数据表”,图表中的“数据表”标签居然叫“模拟运算表”,真不知道微软翻译怎么想的,毫不相关的功能搞混了。
2010版恢复为“模拟运算表”名字,【数据】功能区【数据工具】组的【假设分析】下。
2013版在【数据】功能区【数据工具】组的【模拟分析】下,同在其下的有“单变量求解”、“方案管理器”。不过【图表工具】→【添加图表元素】→【数据表】下面,仍然有“其他模拟运算表选项”的命令。

不管如何,从版本的变迁来看,归属位置定义越来越准确,是一项数据处理的“工具”,是做模拟分析用的。

二、定义
微软帮助文件中:在 Excel 中,模拟运算表是一个单元格区域,用于显示公式中一个或两个变量的更改对这些公式的结果的影响。这称为数据分析。

三、单变量模拟运算表
干脆用一个简单到不知为什么这么简单的例子来说明:

 

B5:B10是变量,需要在C5:C10中得到这个变量X对公式=X*3的结果的影响
【操作步骤】
1、在表头C4单元格输入公式=B2*3
2、选择包含表头、变量区域在内的单元格区域B4:C10,单击【数据】→模拟分析→模拟运算表,即可得到结果。
此时,在C5:C10单元格区域任选一个,编辑栏出现的公式是{=TABLE(,B2)},相当于把C4单元格的公式中用到的B2,分别用B5:B10代替的结果。

引用列的模拟运算表区域,可以分为以下几个部分:
①模拟运算表——即操作时所选择的B4:C10单元格
②表头——B4:C4,其中C4存放公式,公式中要包含“引用列的单元格”B2,这里B2可以任选其他单元格,比如B1、A3等等。
③列变量——B5:B10,用于分别代替C4公式中的B2的值。

 

【解释】
这是一个简单到直接在C5输入=B5*3向下复制就能完成的事情,但举这么个例子只是想抛开“复杂的公式关系”,单独谈谈B2和模拟运算表有什么关系。即:
1、为什么在C4输入=B2*3,为什么是B2?
这个疑问,包括B2都觉得冤,它也认为“关我鸟事啊”。
其实,确实跟B2没什么关系,只是随便抓一个来作为变量X而已,真正的变量X要用B5:B10的值来一个个代入。
2、为什么模拟运算表【输入引用列的单元格】选择B2
因为真正的变量是要使用B5:B10这个区域,这是一列数据,所以,把B2填入引用列的单元格。

好,现在,在把例子变成稍微复杂一点,微软自带的示例:

 

这个示例中,无非把“引用列单元格”也放在表头中





2楼
gouweicao78
好,现在,在把例子变成稍微复杂一点,微软自带的示例

已知抵押贷款利率(一个可能变化的量,分别存放在C2:C8单元格中),贷款期限30年(360个月)存放在B3,贷款金额2250000,存放在B4。
【操作步骤】
1、在D2单元格输入公式
  1. =PMT(C2/12,$B$3,-$B$4)
2、选择C2:D8单元格区域,单击【数据】→模拟运算表,引用列单元格选择C2,确定之后,D3:D8单元格区域返回
  1. {=TABLE{,C2)}

相当于分别用C3、C4……代入到上面公式,替换C2。

这个示例中,无非把“引用列单元格”也放在表头中。
通过上述2个例子,我们学习了引用一列变量的模拟运算表的做法,总结如下:
1、在表头输入公式,公式中包含一个准备用来表示列变量的单元格,这个单元格位置可以也在表头、也可以不在表头。如果引用列单元格不在表头,单元格中输入什么内容并没有什么关系,表头的公式因此返回错误值也无所谓(大家可以在1楼例1的B2单元格输入“关我鸟事”看看,表头C4会出错,但并不影响C5:C10得到正确结果。
2、输入公式的位置,要和将要得到结果的位置同列(例如上面例1,结果在C5:C10,那么公式要输入在C4而不能是B4)。

同理,如果是单个变量引用行单元格,只是把格式换成横向的,并无多少区别。

接下来,讲解双变量的模拟运算表。

 

如图,贷款的利率在C3:C9单元格区域(列变量),期数在D2:G2单元格区域(行变量),利用模拟运算表可以在D3:G9单元格区域得出每月按揭数随利率、期数不同而变化的结果。
【操作步骤】
1、在表头(行列变量交叉区域)C2单元格输入公式:=PMT(A4/12,A3,-$B$2)
2、选择C2:G9单元格区域,单击【数据】→模拟运算表,在【输入引用行单元格】栏中选A3、【输入引用列单元格】栏中选A4,确定。
此时返回{=TABLE(A3,A4)}

其中,C2公式引用了A4是利率,由于利率放在C3:C9中,因此是【列变量】。同理A3是【行变量】,代表D2:G2的期数。
与1楼例1相似,A3、A4都可以任意选取,只要不在模拟运算表区域中即可(大家可以拖动或剪切A3或A4单元格到别处粘贴,再看看C2的公式,以及D3:G9模拟运算表公式的变化。)

【小结】
通过单、双变量模拟运算表的讲解,我们可以明白模拟运算表就是分别把【行变量】【列变量】代入到表头那个公式中去得到的结果,那个莫名其妙的TABLE函数就不再令人陌生了。

还有其他特点吗?
在【公式】选项卡设置【计算选项】中,有3个选项:自动、“除模拟运算表外,自动重算”、手动。也就是说,可以勾选该项,在较大数据量的计算中,有效缓解自动重算引起耗费内存问题。

【突破数据库函数限制的应用】
数据库函数的计算效率较高,但因为设置条件区域的限制,一般就是“一事一求”,很能形成下拉公式批量使用。
当然,除了DSUM可以用扣除法以外。
不过,配合模拟运算表,就可以在某种程度上有所突破。

 
如图,K2可以根据I1:J2设置的条件求出某日期、某超市最大销售数量,但是要像I4:L10那样批量使用数据库函数直接求解是不能实现的,一般常规的解法是使用数组公式:
  1. =MAX(IF(($A$2:$A$22=$I5)*($F$2:$F$22=J$4),$C$2:$C$22))
当数据库记录较多时,数组公式的运算速度瓶颈是一个令人头疼的问题。此时,运用模拟运算表,把日期、超市2个变量分别设置为行、列变量。具体如下:
【操作步骤】
1、在I1:J2设置条件区域,其中I2:J2可以什么也不填写
2、在I4单元格输入公式:=DMAX(A1:G22,"数量",I1:J2)
3、单击【数据】→模拟运算表,在【输入引用行单元格】栏中选取J2单元格,【输入引用列单元格】栏中选取I2单元格(因为I2代表的日期变量在I5:I10这个列区域中),确定即可。

当然,I4单元格的公式也可以使用数组公式(输入后按CTRL+SHIFT+ENTER结束),然后按照第3步操作
  1. =MAX(IF((A2:A22=I2)*(F2:F22=J2),C2:C22))
这个公式不需要考虑绝对引用、相对引用,但需要考虑是普通公式还是数组公式。不过这样使用模拟运算表的运算效率就跟着降低了。

【参考】
数据库函数条件区域设置详解




3楼
gouweicao78
【理解模拟透视表小窍门】
如果通过上面的讲解,你仍然对{=TABLE(X,Y)}感到疑惑的话,我们不妨分解一下,看突破数据库函数限制示例:

1、我们需要求某销售日期、某超市的最大销售数量时,可以用数据库函数来完成。我们会这样操作:
首先,我们在I1:J2设置条件区域,
I1、J1分别是字段名,I2、J2输入想求解的某个日期、超市的名称。
然后,我们在K2输入公式:
  1. =DMAX(A1:G22,"数量",I1:J2)


 


接下来,我们要求的是6个日期、3个超市分别每天的最大销售量。销售日期、超市,这是两个变量,我们把它们放在一行J4:L4、一列I5:I10单元格中,然后复制上面K2单元格的公式,照搬到交叉区域I4单元格中,无需考虑绝对引用、相对引用问题:

 


最后,要完成的操作不难了,只需要选择I4:L10区域,单击【数据】→模拟分析→模拟运算表,然后填写行、列变量的位置。
因为公式=DMAX(A1:G22,"数量",I1:J2)中,变量在I2和J2单元格,I2是销售日期变量,因为放在I5:I10这个【列】区域中,因此I2就填写到【模拟运算表】的“输入引用的单元格”栏目中。

4楼
畅心
学习
5楼
xpm130
总版辛苦了.学习中.
6楼
修斯普罗米
不错、、、完全理解了、、

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap