分享

最新分享

 baoyongguang 2011-09-08
Excel制表技巧(49)函数应用

        用EXCEL实现产销平衡下成本最优化

       在人们的实践中,经常出现各种运输活动。譬如,粮棉钢煤等物资从全国各生产基地运到各个消费地区;或者某厂的原材料从仓库运往各个生产车间;或各车间的产成品又分别运往成品仓库等等。这些运输活动一般都有若干个发货地点,简称产地;有若干个收货地点,简称销地;各产地各有一定的可供货量,简称产量;各销地各有一定的需求量,简称销量。那么,运输问题就是要在买足各销地的需求与产地产量平衡的前提下,如何组织调运才能使总的运输费用达到最低。本文通过实例运用Excel的规划求解功能进行运输问题的分析。 

    例:某地区有A1,A2,A3三座铁矿,每天要把生产的铁矿石运往B1,B2,B3,B4四个炼铁厂。各矿的产量、各厂的销量(百元/天)以及各厂矿间的运价如表1所示。问应如何组织调运才能达到产销平衡并使总运费最少?   

表1  某地区厂矿运输问题的数据

    解:运用Excel的规划求解进行管理优化分析的步骤如下:

    一、根据题意,设置本问题的决策变量和目标函数

    设:Xij为每天从Ai矿运往Bj厂的矿石数量(百吨),Y为总运费,由表1及变量可以得出总运费Y=6X11+3X12+2X13+5X14+7X21+5X22+8X23+4X24+3 X31+2X32 +9X33+7X34 

    则本问题的目标函数为求minY

 二、根据题意及决策变量与目标函数得出本问题的线性规划模型 

    目标函数: min Y= 6X11+3X12+2X13+5X14+7X21+5X22+8X23+4X24+3 X31+2X32 +9X33+7X34 

    约束条件:X11+ X12+ X13+ X14=5 (满足A1矿的产量)
                   X21+ X22+ X23+ X24=2(满足A2矿的产量)
                   X31+ X32+ X33+ X34=3(满足A3矿的产量)
                   X11+ X21+ X31 =2(满足B1厂的需求量)
                   X12+ X22 +X32 =3(满足B2矿的需求量)
                   X13+ X23 +X33 =1(满足B3矿的需求量)
                   X14+ X24 +X34 =4(满足B4矿的需求量)
                   Xij >=0(i=1,2,3,j=1,2,3,4)(决策变量非负约束)

    三、根据上述约束条件构建Excel模型,如下图 

 

图2

    其中单元格B4:E4分别为决策变量X11,X12,X13,X14 所在单元格;B6:E6分别为决策变量X21,X22,X23,X24 所在单元格;B8:E8分别为决策变量X31,X32,X33,X34 所在单元格;B11单元格为实际运价所在单元格,其公式“==SUMPRODUCT(B3:E3,B4:E4)+SUMPRODUCT(B5:E5,B6:E6)+SUMPRODUCT(B7:E7,B8:E8)” 。。

      四、根据上述规划模型进行规划求解参数设置,如下图 

 

图3

    五、规划求解结果

 

图4

    通过上表可以看出,在满足产销平衡要求的前提下,从A1矿向B2厂运2百吨的矿石,向B3厂运1百吨的矿石,向B4厂2百吨矿石;从A2矿向B4厂运2百吨矿石;从A3矿向B1厂运2百吨矿石,向B2厂运1百吨矿石,才能使总运价最低,总运价最低为3400元。

    备注:随着各矿、厂的资源或生产能力的变化,以及外界的运输价格等发生了变化,本题只需要把模型中的相关数据作一些修改就可以满足产销的动态平衡的基础上,实现成本最小化。

       尝试采用Excel探究自由落体运动的实现过程

      “探究自由落体运动”是通过打点计时器记录下重物自由下落的运动轨迹,根据其仅受重力作用,故猜想自由落体运动是最简单的变速运动即匀变速直线运动。作为一个让中学生自己探究的活动,如何才能做到既科学严谨又操作简单快捷地验证该猜想呢?笔者尝试采用Excel来帮助学生完成这个任务,下面是具体的实现过程。 

设计验证思路
我们利用打点计时器记录自由落体运动轨迹时,得到的轨迹如图1所示。如何通过纸带的信息验证自由落体运动是匀变速直线运动呢?实验验证的方法很简单:通过测量出纸带上各点的位移,只要证明纸带上各点的位移与对应时间的平方成正比,或证明各时刻的速度均匀增加,便可证明自由落体运动是匀变速直线运动。

输入实验数据
Excel软件工作簿的某一列(本文为了方便介绍称此列为第一列)的单元格中依次输入各点测量时间。在其相邻的一列(称第二列)中输入对应的位移值,实验测量的数据是以毫米为单位的,为了使输入快捷些,我们在该列直接输入以毫米为单位的位移值。在第三列的第一行输入“=”号,然后点击第二列第一个数据,再输入 “ 10^-3”,即得到“=B2 10^-3”,按“回车键”,再点击该数值出现一“十”字光标,拖动光标往下拉,得到一组数据,该组数据实际上是把第二列的数据转化成以米为单位的位移值(如图2)。

建立s-t图像
选中第一列和第三列数据,选中下拉菜单“插入”中的“图表”,便弹出“图表向导”对话框,在“标准类型”项中选择“X-Y散点图”,接着按照“图标向导”的提示,便可一步步得到所要画的s-t图像。其中要设置的是“图标向导-4步骤之3-图表选项”,在该项中我们可以输入图表标题,X轴、Y轴标题,还可以对坐标轴、网格线、图表位置等进行设置。

添加趋势线并显示曲线表达式
移动鼠标至生成的s-t图表中某一散点,点击鼠标右键,选择“添加趋势线”命令,便出现“添加趋势线”对话框,其中的“类型”标签中有“线性”、“对数”、“多项式”等几种可选择的回归分析类型,选中“多项式”。在另一个标签“选项”中选中其中的“显示公式”项,再点击〔确定〕,即可将各点趋势线描出并将该曲线的表达式显示出来(如图3)。由于测量数据的误差,拟合出来的“位移-时间”表达式为y=4.9152x2-0.0011x-2E-05,但是我们可以看到其中的x项系数及常数项相对x2项系数小得多,故这两项可视为误差,忽略不计,即得y=4.9152x2。这样我们便简单快捷地证明了纸带上各点的位移与对应的时间平方成正比。 

现在我们来证明各时刻的速度是均匀增加的,根据自由落体运动物体在某一时刻速度为vt=2s/t(s和t分别为该点的位移和时间,该证明课本已有详述)。根据该式我们可以得出物体在各个时刻的速度,只需在上面的位移数据后一列第三行输入“=C3 2/A3”,然后按“回车键”,再点击该数值出现一“十”字光标,拖动光标往下拉,得到物体在各个时刻所对应的速度数据。选中时间数据和速度数据,再通过图表向导、设置图表、添加趋势线、显示曲线公式等步骤,便可生成如图4的v-t图表。其过程与上面类似,惟一不同的是在“添加趋势线”对话框的“类型”标签中应选择“线性”而不是“多项式”。我们得到“速度-时间”关系表达式为y=9.831x-0.0029,很明显常数项比x项系数小得多,可视为误差不计,故可得到各点速度正比于时间,物体作匀变速直线运动且其加速度为9.831。

实践证明:以上这种通过让学生学会利用计算机来处理实验数据,自主探究物理规律的活动,对加深学生理解课本知识,提高学生的科学创造力和培养学生处理信息能力都是很有益的。

        用EXCEL制作一份万年历

今天我们介绍用Excel制作万年历的方法。这个万年历可以显示当月的月历,还可以随意查阅任何日期所属的月历,非常方便。如果你愿意,还可以让它在特殊的日子里显示不同的提醒文字,一起来试试吧!

  文章末尾提供.xls文件供大家下载参考。

  本文所涉及到的函数有:

  1、AND (logical1,logical2, ...)
  2、DATE (year,month,day)
  3、DAY (serial_number)
  4、IF (Logical,Value_if_true,Value_if_false)
  5、INT (number)
  6、MONTH (serial_number)
  7、NOW ()
  8、OR (logical1,logical2, ...) 

  1、启动Excel2003,新建一个工作表,取名保存(如万年历.xls),并在相应的单元格中,输入如图1所示的文本。

  2、同时选中B1、C1、D1单元格,按“格式”工具栏上的“合并及居中”按钮,将其合并成一个单元格,并输入公式:=TODAY()。

  选中B1(合并后的)单元格,执行“格式→单元格”命令,打开“单元格格式”对话框(如图2),在“数字”标签中的“分类”下面选中“日期”选项,再在右侧“类型”下面选中“二○○一年三月十四日”选项,“确定”退出,将日期设置成中文形式。

  注意:TODAY()函数用于提取当前系统日期,请将系统日期一定要调整准确哟。

  3、选中F1单元格,输入公式:=IF(WEEKDAY(B1,2)=7,"日",WEEKDAY(B1,2));选中H1单元格,输入公式:=NOW()。

  选中F1单元格,打开“单元格格式”对话框,在“数字”标签中的“分类”下面选中“特殊”选项,再在右侧“类型”下面选中“中文小写数字”选项,“确定”退出,将“星期数”设置成中文小写形式;选中H1单元格,打开“单元格格式”对话框,在“数字”标签中的“分类”下面选中“时间”选项,再在右侧“类型”下面选中一款时间格式,“确定”退出。

  注意:①上述前面一个公式的含义是:如果(IF)当前日期(B1)是星期“7”(WEEKDAY(B1,2)=7),则在F1单元格中显示“日”,否则,直接显示出星期的数值(WEEKDAY(B1,2))。
  ②上述第二个函数(NOW())用于提取当前系统日期和时间,也请将系统日期和时间调整准确。

  4、在I1、I2单元格分别输入1900、1901,然后同时选中I1、I2单元格,用“填充柄”向下拖拉至I151单元格,输入1900—2050年份序列。
  同样的方法,在J1至J12单元格中输入1—12月份序列。

  5、选中D13单元格,执行“数据→有效性”命令,打开“数据有效性”对话框(如图3),按“允许”右侧的下拉按钮,选中“序列”选项,在“来源”下面的方框输入:=$I$1:$I$151,“确定”退出。

  同样的操作,将F15单元格数据有效性设置为“=$J$1:$J$12”序列。

  注意:经过这样的设置以后,当我们选中D15(或F15)单元格时,在单元格右侧出现一个下拉按钮,按此下拉按钮,即可选择年份(或月份)数值,快速输入需要查询的年、月值。

  6、选中A2单元格(不一定非得是A2哟),输入公式:=IF(F13=2,IF(OR(D13/400=INT(D13/400),AND(D13/4=INT(D13/4),D13/100<>INT(D13/100))),29,28),IF(OR(F13=4,F13=6,F13=9,F13=11),30,31)),用于获取查询“月份”所对应的天数(28、29、30、31)。

  注意:上述函数的含义是:如果查询“月份”为“2月”(F13=2)时,并且“年份”数能被400整除[D13/400=INT(D13/400)],或者(OR)“年份”能被4整除,但不能被100整除[AND(D13/4=INT(D13/4),D13/100<>INT(D13/100))],则该月为29天(也就是我们通常所说的“闰年”),否则为28天。如果“月份”不是2月,但是“4、6、9、11”月,则该月为30天。其他月份天数为31天。

  7、选中B2单元格,输入公式:=IF(WEEKDAY(DATE($D$13,$F$13,1),2)=B3,1,0)。再次选中B2单元格,用“填充柄”将上述公式复制到C2—H2单元格中。

  注意:①上述B2公式的含义是:如果“查询年月”的第1天是星期“7”(WEEKDAY(DATE)($D$13,$F$13,1),2)=B3)时,在该单元格显示“1”,反之显示“0”),为“查询年月”获取一个对照值,为下面制作月历做准备。
  ②上述C2—H2单元条中公式的含义与B2相似。
  ③在用拖拉法复制公式时,公式“绝对引用”的单元格(加了“$”号的,如“$D$13”等)不会发生改变,而“相对引用”的单元格(没有加“$”号的,如“B3”等),则会智能化地发生变化,例如在E2单元格中,“B3”变成了“E3”,整个公式成为:=IF(WEEKDAY(DATE($D$13,$F$13,1),2)=E3,1,0)。

  8、选中B6单元格,输入公式:=IF(B2=1,1,0)。选中B7单元格,输入公式:=H6+1。用“填充柄”将B7单元格中的公式复制到B8、B9单元格中。

  分别选中B10、B11单元格,输入公式:=IF(H9>=A2,0,H9+1)和=IF(H10>=A2,0,IF(H10>0,H10+1,0))。

  选中C6单元格,输入公式:=IF(B6>0,B6+1,IF(C2=1,1,0))。用“填充柄”将C6单元格中的公式复制到D6—H6单元格中。   

  选中C7单元格,输入公式:=B7+1。用“填充柄”将C7单元格中的公式复制到C8、C9单元格中。同时选中C7—C9单元格,用“填充柄”将其中的公式复制到D7—H9单元格中。

  选中C10单元格,输入公式:=IF(B11>=$A$2,0,IF(B11>0,B11+1,IF(C6=1,1,0)))。用“填充柄”将C10单元格中的公式复制到D10—H10单元格和C11单元格中。

  至此,整个万年历(其实没有万年,只有从1900—2050的151年)制作完成。

  下面,我们一起来将其装饰一下。

  9、选中相应的单元格,利用工具栏上的相应按钮,设置好字体、字号、字符颜色等。
  选中相应的单元格,打开“单元格格式”对话框,在“对齐”标签下,设置好单元格中文本的对齐方式(通常情况下,垂直对齐可以一次性设置为“居中”,水平“对齐”根据具体情况设置)。

  同时选中I列和J列,右击鼠标,选“隐藏”选项,将相应的列隐藏起来,使得界面更加友好。用同样的方法,将第2和第3行也隐藏起来。

  10、选中B5—H11单元格区域,打开“单元格格式”对话框,进入“边框”标签,选择好“颜色、样式”,并“预置”好边框范围,然后“确定”退出,为月历加上边框。

  11、执行“工具→选项”命令,打开“选项”对话框(如图4),在“视图”标签下(通常是默认标签),清除“零值”和“网格线”复选框中的“∨”号,“确定”退出,让“零值”和“网格线”不显示出来。
 

  12、将B14—H14和B15—H15单元格分别合并成一个单元格,并在B14和B15单元格中输入公式:=IF(AND(MONTH(D1)=1,DAY(D1)=1),"新的新气象!加油呀!",IF(AND(MONTH(D1)=3,DAY(D1)=8),"向女同胞们致敬!",IF(AND(MONTH(D1)=5,DAY(D1)=1),"劳动最光荣",IF(AND(MONTH(D1)=5,DAY(D1)=4),"青年是祖国的栋梁",IF(AND(MONTH(D1)=6,DAY(D1)=1),"原天下所有的儿童永远快乐",0)))))和=IF(AND(MONTH(D1)=7,DAY(D1)=1),"党的恩情永不忘",IF(AND(MONTH(D1)=8,DAY(D1)=1),"提高警惕,保卫祖国!",IF(AND(MONTH(D1)=9,DAY(D1)=10),"老师,您辛苦了!",IF(AND(MONTH(D1)=10,DAY(D1)=1),"祝我们伟大的祖国繁荣富强",0))))。

  设置好B14和B15单元格的字体、字号、字符颜色。

  注意:上述公式的含义是:如果当前日期逢到相关的节日(如“元旦”等),则在B14或B15单元格显示出相应的祝福语言(如“新的新气象!加油呀!”,参见图5)。

  由于IF函数只能嵌套7层,而节日数量超过7个(我们这里给出了9个),因此,我们用两个单元格来显示。 

    13、执行“格式→工作表→背景”命令,打开“工作表背景”对话框(如图6),选择一张合适的图片后,按“插入”按钮,将其衬于工作表文字下面。

  14、在按住“Ctrl”键的同时,单击D13和F13单元格,同时选中两个单元格,开“单元格格式”对话框,切换“保护”标签(如图7),清除“锁定”前面复选框中的“∨”号,“确定”退出。

  15、执行“工具→保护→保护工作表”命令,打开“保护工作表”对话框(如图8),两次输入密码后,确定退出。

  注意:经过这样的设置后,整个工作表中除了D13和F13单元格中的内容可以改变外,其它单元格中的内容均不能改变,保证了万年历的使用可靠性。

       Excel函数应用实例计算授课天数
       企业、学校等单位均存在许多管理计算问题,例如计算一个学期有几个授课日、企业在多少个工作日之后交货等等。今天先介绍计算授课天数。  

       (1)函数分解  

       NETWORKDAYS函数专门用于计算两个日期值之间完整的工作日数值。这个工作日数值将不包括双休日和专门指定的其他各种假期。
语法:NETWORKDAYS (Start_date,End_date,Holidays)  

       Start_date表示开始日期;End_date为终止日期,Holidays表示作为特定假日的一个或多个日期。这些参数值既可以手工输入,也可以对单元格的值进行引用。  

        (2)实例分析  

       假设新学期从2003年9月1日开始到2004年1月15日结束,希望知道本学期有多少个授课日,也就是排除双休日和国家法定假日外的授课工作日。这就是计算授课日数或工作日数的问题。  

       首先打开一个空白工作表,在A1、B1、C1单元格输入“开学时间”、“结束时间”、“法定节日”,然后在其下面的单元格内输入“2003-9-1”、“2004-1-15”、“2003-10-1” “2003-10-2”、“2003-10-3”和“2004-1-1”(后四项必须在C列的“法定假日”下)。  

        接着可以选中D2单元格,输入公式“=NETWORKDAYS(A2,B2,C2:C5)”。公式中A2引用的是学期(或工作)的开始日期,B2引用的是学期结束的日期,C2:C5区域引用的是作为法定假日的多个日期。输入结束回车即可获得结果95,即2003年9月1日到2004年1月15日,排除四个法定假日后的实际授课日是95天。  
      巧用IF函数合并Excel数据表

  第一步、合二为一

  分别打开“语文”及“数学”这两个Excel表格,大家从图1中可以看出,两个表格的列数是一样的,A列是名次,B列是学生编号,C列是姓名,D列是成绩。

  如果直接将“数学”表格中的数据复制到“语文”表格中,因为D列同是成绩,那么就无法区分出语文及数学成绩了,所以在复制“数学”表格的数据前,在“数学”表格的D列顶端单击鼠标左键,选中整列,然后单击鼠标右键,选择其中的“插入”,在D列前插入一列。

  这样,“数学”表格中的成绩就由D列变为E列了。接下来从表格的第2行起,拖动鼠标选到第31行,然后在选中的列表上点右键,选择“复制”,再将表格窗口切换到“语文”表格窗口中,在A列下的空白位置,第32行的第一个格上单击鼠标右键,选择菜单中的“粘贴”,这样就把两个表格的数据合二为一了,如图2。

 图2

        Excel计算住房贷款和个人储蓄
    银行中的利息计算起来非常的烦琐,让大多数没有学过专业财会方面的人都感到束手无策,比如在银行方面的住房贷款及个人储蓄等方面。MSoffice中的Excel计算完全可以让你解除这方面的烦恼。请跟我着往下关于这两个问题的实例解决方法。 
  Excel 2002中的PMT函数,通过单、双变量的模拟运算来实现贷款的利息计算。通过讲解,相信读者可以很方便地计算分期付款的利息,以及选择分期付款的最优方案。 

  固定利率的付款计算 

  PMT函数可基于固定利率及等额分期付款方式,根据固定贷款利率、定期付款和贷款金额,来求出每期(一般为每月)应偿还的贷款金额。先来了解一下PMT函数的格式和应用方式: 

  PMT(Rate,Nper,Pv,Fv,Type) 

  其中各参数的含义如下: 

  Rate:各期利率,例如,如果按4.2%的年利率借入一笔贷款来购买住房,并按月偿还贷款,则月利率为4.2%/12(即 0.35%)。用户可以在公式中输入4.2%/12、0.35%或0.0035作为Rate的值。 

  Nper:贷款期数,即该项贷款的付款期总数。例如,对于一笔10年期按月偿还的住房贷款,共有10×12(即120)个偿款期数。可以在公式中输入120作为Nper的值。 

  Pv:现值,或一系列未来付款的当前值的累积和,也就是贷款金额。 

  Fv:指未来终值,或在最后一次付款后希望得到的现金余额。如果省略Fv,则假设其值为零,也就是一笔贷款的未来值为零,一般银行贷款此值为0。 

  Type:数字0或1,用以指定各期的付款时间是在期初还是期末。如果为0或缺省,表明是期末付款,如果为1,表明是期初付款。  

    浮动利率的付款计算 

  下面结合实例讲解利用该函数的具体计算方法,假定采用分期付款的方式,用户贷款10万元用于购买住房,如果年利率是4.2%,分期付款的年限是10年,计算该用户在给定条件下的每期应付款数。 

    如图1所示,在单元格A1、B1、A2、B2、A3、B3中分别输入给定条件,D2~D11中分别输入不同的利率条件,按照下列步骤进行计算:   

  1.选定要输入公式的单元格E1,可以直接输入公式“=PMT(B3/12,B2*12,-B1)”,返回一个值1021.98,这个值就是用户每月的付款额,图1中的B4与E1单元格的输入公式相同,这一步也可以利用粘贴函数来输入函数;操作过程是:单击“常用”工具栏中的“粘贴函数”按钮,弹出“粘贴函数”对话框。在“函数分类”框中选择“财务”,在“函数名”列表框中选择“PMT”。 

  2.单击“确定”按钮,出现如图2所示的“公式选项板”,在“Rate”框中输入利率“B3/12”,即把年利率转换成月利率;在“Nper”框中输入“B2*12”,即把支付的年限换算成支付的月数;在“Pv”框中输入贷款金额“-B1”(加入负号是为返回一个正值)。  

  3.单击“确定”按钮,即可在E1单元格中得到年利率为4.2%条件下,分期付款每期应付的金额数。 
  4.选定包含输入数值和公式的范围,选择“数据”菜单中的“模拟运算表”命令,出现 “模拟运算表”对话框。 

  5.由于变量的替换值排在一列中,因此单击“输入引用列的单元格”文本框,然后输入“B3”。 

  6.单击“确定”按钮,得到如图3所示的结果,即得出在不同利率条件下每月应付的金额数。用户即可根据自己的需要进行选择。  

  上述计算运用的是单变量模拟运算,就是考查一个值的变化(这里是利率的变化)对公式的计算结果的影响程度。 

  由于我国现行的贷款利率由政府统一规定,所以较少出现上述的计算。随着市场经济的深化和我国加入WTO,利率市场化的步伐也逐步加快,国家已要求各地在适当的时候和合适的条件下实施利率市场化改革,到那时必将出现不同利率的贷款,用户就可以更多地利用上述方法计算贷款利息了。

    浮动利率、浮动年限的付款计算 

  用户在计算住房贷款时,根据个人经济条件往往会考虑不同的利率和不同的分期付款年限条件下的每月付款额。这种情况下的计算只要在上述计算的基础上加一个变量,也就是双变量模拟运算表,即输入两个变量的不同替换值,然后计算这两个变量对公式的影响。 

  当计算不同利率不同年限的分期付款额时,需要建立有两个变量的模拟运算表,一个表示不同的利率,另一个表示不同的付款年限,具体操作如下: 

  1.建立如图4所示的表格,在单元格B6中输入公式“=PMT(B3/12,B2*12,-B1)”,用户要注意的是不同的利率值输入在一列中,必须在PMT公式的正下方,不同年限输入在一行中,行输入项必须在公式的右侧。 

  2.选定包含公式及输入值的行和列的单元格数据。选择“数据”菜单中的“模拟运算表”命令,出现一个“模拟运算表”对话框。 

  3.由于付款年限被编排成行,因此在“输入行的引用单元格”文本框中输入“B2”,年利率被编排成列,在“输入列的引用单元格”文本框中输入“B3”。 

  4.单击“确定”按钮,即可得到如图5所示的运算结果。 

  用户可以根据个人实际情况,代入相应数据后,选择适合自己的分期付款利率和年限的支付方案。以上仅仅介绍了Excel 2002中的PMT函数计算贷款条件下的分期付款额,这个公式还可以用来计算用户的零存整取储蓄额,如用户想在几年后达到一定的存款额,给定存款利率和年限条件,利用该函数可计算出每月应存入银行的金额数。另外,该函数还可以用于计算个人的保险、养老金等的分期投入额。大家可以用自己的数据来计算一下。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多