【重要例子!】用Excel仿真---运营与供应管理(20)

Hi,朋友们,我们又见面了。阅兵场面是不是有点想流泪的感觉?感觉祖国的强大才能给我们民众带来应有的尊严哦。

我们继续EXCEL仿真的话题。

如果想要我们的结果更加有可视化,我们可以采用EXCEL中的VBA编程来使得更加清晰。

如何打开VBA呢?我们只要在EXCEL中的文件-》选项-》自定义功能区增加开发工具就可以了。这样我们可以在EXCEL的Tab上面看到VBA了。如下图:

有了这个,我们就可以开始在VB中编程了。

我们结合一个小例子开始我们的建模仿真。

例:我们观察20分钟的餐馆。有5位顾客在0-10分钟的阶段按照随机的时间进入餐馆,假设顾客一进入餐馆就能立即获得服务,餐馆的服务时间是一个正态分布函数,平均值是10分钟,标准差是0.5分钟。问在这20分钟内,餐馆的顾客数量变化是怎样的?需要多少张座位就能满足90%情况下的需求?

想想看,如果没有仿真,我们如何下手?可能直接投降吧,但是有了仿真我们就不虚!

我们一步一步来建立模型:

1、我们首先要使用上期讲的随机函数生成这5个顾客进入店面的时间。分别显示在我们的第一列,同时用上期讲的生成正态分布函数 + 进入店面时间 = 离开店面时间,显示在第二列,代码如下:

For i = 1 To 5

Cells(i, 1).Value = Rnd() * 10

Cells(i, 2).Value = Application.WorksheetFunction.NormInv(Rnd(), 10, 1) + Cells(i, 1).Value

Next

结果:

2、接着,我们就可以用这两个时间来划线,起点是顾客进入店面时间,终点是顾客离开店面时间。VBA中划线函数是AddLine大家可以琢磨下,具体代码是:

ActiveSheet.Shapes.AddLine(startpoint + Val(Cells(i, 1)) * ColumnWidth, (i - 0.5) * hg, startpoint + Val(Cells(i, 2)) * ColumnWidth, (i - 0.5) * hg).Select

结果:

如果用一条竖线划下来,与横线的交叉点的个数就是那个时刻餐馆内顾客的数量(也就是需要的椅子的个数)如下图:

这样我们可以看出来在3-4分钟的时候3个顾客在餐馆。10分钟这个整点,貌似有5个人。

3、统计每个时间点顾客人数。

像上面这样用肉眼去观测,很不合理。所以我们得弄一个统计的东西。我们每6秒(就是我们仿真中需要的Time Increment)统计一次,看看有多少个顾客在餐馆中。

代码为:

For j = 1 To 200

inventorynumber = 0

For i = 1 To 5

If Val(Cells(i, 1)) <= j / 10 Then inventorynumber = inventorynumber + 1

If Val(Cells(i, 2)) <= j / 10 Then inventorynumber = inventorynumber - 1

Next

ActiveSheet.Shapes.AddLine(startpoint + j / 10 * ColumnWidth, (inventorynumber + 7) * hg, startpoint + j / 10 * ColumnWidth, (inventory + 7) * hg).Select

Next

结果是:(在该时间点上蓝色区域占几格,那么该时间点餐馆内就有几名顾客)

这样看起来更加方便了!看来这次仿真运行中只有大约10分钟整的时候才有5个人呢!

4、但是只运行一次很不合理,我们需要多运行几次。

结果二:

结果三:

哦,看上去结果很不一样呢!

5、运行到这里,小伙伴们是不是知道接下去应该怎么做,去算座位需求个数啦?如果服务时间是方差2分钟呢?

这个是模块中的所有代码,小伙伴们可以拷贝到自己的EXCEL中,调整一下里面的参数,试试看有什么不同的结果哦!9月的《酱油侃IE》开课啦,9月我们将讨论1、计时计件薪酬。2、精益薪酬。3、OEE计算。原文链接是报名地址哦~

Sub drawline()

For Each s In ActiveSheet.Shapes

s.Delete

Next

hg = ActiveSheet.Rows("1:1").Height

ColumnWidth = ActiveSheet.Columns("C:C").Width

startpoint = ActiveSheet.Columns("A:B").Width

For i = 1 To 5

Cells(i, 1).Value = Rnd() * 10

Cells(i, 2).Value = Application.WorksheetFunction.NormInv(Rnd(), 10, 1) + Cells(i, 1).Value

ActiveSheet.Shapes.AddLine(startpoint + Val(Cells(i, 1)) * ColumnWidth, (i - 0.5) * hg, startpoint + Val(Cells(i, 2)) * ColumnWidth, (i - 0.5) * hg).Select

Next

For j = 1 To 200

inventorynumber = 0

For i = 1 To 5

If Val(Cells(i, 1)) <= j / 10 Then inventorynumber = inventorynumber + 1

If Val(Cells(i, 2)) <= j / 10 Then inventorynumber = inventorynumber - 1

Next

ActiveSheet.Shapes.AddLine(startpoint + j / 10 * ColumnWidth, (inventorynumber + 7) * hg, startpoint + j / 10 * ColumnWidth, (inventory + 7) * hg).Select

Next

End Sub

(0)

相关推荐

  • 一个通用的Delphi数据导出到Excel函数

    关键字:delphi 对Excel编程,TDataSet(Tquery,TTabe)导到Excel,如何设置Excel字体.文本对齐方式,如何设置单元格边框,如何合并单元格,如何Excel打印设置,如 ...

  • 【重要例子说三遍!】用Excel仿真---运营与供应管理(20)

    我们继续EXCEL仿真的话题. 如果想要我们的结果更加有可视化,我们可以采用EXCEL中的VBA编程来使得更加清晰. 如何打开VBA呢?我们只要在EXCEL中的文件->选项->自定义功能区 ...

  • 用Excel仿真---运营与供应管理(18)

    我们知道Arena,Flexsim这些通用的仿真软件: 也知道Witness这样的制造型仿真软件.这些软件功能强大,有的甚至可以显示3D的图像. 但是,工作中的很多场景是,我只想仿真3台设备和2个人. ...

  • 用Excel仿真---运营与供应管理(19)

    上期我们讨论了仿真的步骤.今天我们说说怎么用Excel搭建仿真基础~ 为什么Excel中可以实现仿真?? 1.变量和参数 这个是根据每个项目不同的情况而设定,没有普遍适用性,所以我不讲. 2.决策的规 ...

  • Excel技术 | 名称4:管理名称

    使用Excel的名称管理器,可以方便地管理名称.单击"公式"选项卡的"定义的名称"组中的"名称管理器",调出"名称管理器" ...

  • 宁波XX国际贸易有限公司供应管理模式设计方案

    宁波XX国际贸易有限公司供应管理模式设计方案

  • 从污水处理厂的运营周期谈管理

    在我国大范围分布着县城一级的小型污水处理厂,在水环境治理中也越来越承担更大的水体保护责任,探寻县城级别的污水处理厂的良好运行,以及利用县城带动周郊村镇的农村污水建设和运营管理,是解决县城及乡镇污水运营 ...

  • 黄龙梅:医院精益运营与绩效管理

    医管新世界 努力搭建医疗卫生机构广大卫生人学习的大平台. 272篇原创内容 公众号 欢迎领导.专家和同仁老师们积极联系小编(微信号:dhn010),推荐您的好文,分享您的智慧.经验与感悟,谢谢!! 作 ...

  • 每日资料分享:哔哩实操运营从0到20万粉实操教程

    多时候,做自媒体已经成为很多人的副业首选,但如何去做,尤其是短视频如何起号等等,这些都是需要我们去思考. 但思考之后,都没有任何的快捷途径,也找不到方法. 如果我们过程仅仅是在一抖一快中去选择,那或许 ...

  • Excel VBA之函数篇-3.20 半角or 全角 数据处理并不难

    场景说明 可能看见标题的时候,很多的童鞋都是懵逼的状态的,什么全角半角?不太了解吗?看来如果这些童鞋的公司也有这样的要求的话,估计就要遭殃咯,我们来看下右下角的输入法, 普遍常用的就是搜狗输入法和QQ ...