Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 5836|回复: 19

怎么使用VBa解决条件引用问题

[复制链接]
发表于 2019-5-24 15:17 | 显示全部楼层 |阅读模式
1学分
调度员从A网点将车辆调度到B网点,该车辆在一定时间内产生订单(1h、3h、5h、10h、12h、24h),分别计算计算(1h、3h、5h、10h、12h、24h)调度工单转化率(调度员A总调度工单数/调度后一定时间内产生订单的工单总数*100%),A城市总调度工单转化率,调度员调度工单转化率。哪位大神可以操作,困扰好几天了。

调度工单转化率1.zip

587.26 KB, 下载次数: 8

发表于 2019-5-24 22:45 | 显示全部楼层
没有看懂您的意思,真是隔行如隔山,可以详解下?
回复

使用道具 举报

 楼主| 发表于 2019-5-27 10:16 | 显示全部楼层
fjmxwrs 发表于 2019-5-24 22:45
没有看懂您的意思,真是隔行如隔山,可以详解下?

共享汽车行业,一个城市有N个取还车的停车场,为了让车辆利用率提高,我们工作人员需要合理的将车辆从订单少的停车场移动到其他停车场,比如A停车场有10辆车,只有8人下订单,B停车场有5辆车,但是有6人下订单,也就是B停车场少车,需要从A点这个过程我们称为调度,现在我需要从数据中发现工作人员的调度是有用的还是无用的,也就是他调度之后一定时间,该车辆一定时间内有没有产生订单,这个时间包含1小时、3小时、6小时、12小时、24小时,只计算调度后的第一笔订单。这个结果我们称为调度工单转化率
回复

使用道具 举报

 楼主| 发表于 2019-5-27 10:24 | 显示全部楼层
excel小白1 发表于 2019-5-27 10:16
共享汽车行业,一个城市有N个取还车的停车场,为了让车辆利用率提高,我们工作人员需要合理的将车辆从订 ...

这样,能不能算出来,涉及到的数据我附了文件,订单和工单,工单就是调度单
回复

使用道具 举报

发表于 2019-5-27 14:49 | 显示全部楼层
excel小白1 发表于 2019-5-27 10:24
这样,能不能算出来,涉及到的数据我附了文件,订单和工单,工单就是调度单

我也是完全看不懂你的问题,我看了订单和工单这两个表,除了有两行是相同车型,即渝A063EQ和渝AX196Z,其他车辆都是完全不同的车辆牌照,不同牌照的车如何计算转化率?
回复

使用道具 举报

 楼主| 发表于 2019-5-27 15:09 | 显示全部楼层
hfwufanhf2006 发表于 2019-5-27 14:49
我也是完全看不懂你的问题,我看了订单和工单这两个表,除了有两行是相同车型,即渝A063EQ和渝AX196Z,其 ...

不存在你说的问题啊,订单有2万多条,工单3千多条,主要是在时间这个维度上去考虑,其中一个工单完成后,这个工单的车号在一定时间内有无产生订单
回复

使用道具 举报

 楼主| 发表于 2019-5-27 15:25 | 显示全部楼层
hfwufanhf2006 发表于 2019-5-27 14:49
我也是完全看不懂你的问题,我看了订单和工单这两个表,除了有两行是相同车型,即渝A063EQ和渝AX196Z,其 ...

比如

工单订单
GD2019040102572渝AU037H龙安宁2019/4/1 8:21A市渝AU037H2019/4/1 13:18A市
GD2019040103204渝AT630B王杰2019/4/1 8:57A市渝AT630B2019/4/2 10:57A市
GD2019040103765渝AM351G刘飞2019/4/1 9:22A市渝AT630B2019/4/1 14:57A市
GD2019040103936渝AM351G吴邦地2019/4/2 9:31A市渝AT630B2019/4/1 16:57A市
GD2019040104249渝AT630B刘飞2019/4/2 9:34A市渝AM351G2019/4/1 16:22A市
GD2019033129303渝AU037H文韬2019/4/2 9:55A市渝AM351G2019/4/1 18:22A市
GD2019040104534渝AM971F霍浩2019/4/1 10:03A市渝AM351G2019/4/2 8:22A市
计算A市24小时工单转化率:第一条工单车号渝AU037H,在24小时内产生订单,既转化成功

第二条工单车号渝AT630B,在24小时内产生2个订单,既转化成功

.

.

.

.



回复

使用道具 举报

发表于 2019-5-27 15:42 | 显示全部楼层

我之前把数据看漏了,以为只有屏幕显示的十几行,没注意看行号。
我试试看,理论上我认为难度不大,但我还是很怀疑是否理解了你问题的本质。
回复

使用道具 举报

 楼主| 发表于 2019-5-27 16:04 | 显示全部楼层
hfwufanhf2006 发表于 2019-5-27 15:42
我之前把数据看漏了,以为只有屏幕显示的十几行,没注意看行号。
我试试看,理论上我认为难度不大,但我 ...

多谢,这个问题困扰了好久,有通过公式解决的办法,但是太繁琐了,每次需要花费大量的时间,vba可不可以做到一个模板
回复

使用道具 举报

发表于 2019-5-27 16:28 | 显示全部楼层
我写了一段代码,放在表单“工单”中,会在f列生成对应的订单数量。与你的要求还有区别,因为我还没完全搞清楚你公式的含义,后面我有说明。
由于订单数量很大,整个运行需要2分20秒:
Range(Cells(1, 6), Cells([a10000].End(3).Row, 6)).ClearContents
Cells(1, 6) = "转化率"
Application.ScreenUpdating = False
Dim arr
arr = Worksheets("订单").[a2:c25694]
For i = 2 To [a10000].End(3).Row
    s1 = Cells(i, 2)
    s2 = Cells(i, 4)
    js = 0
    For k = 1 To UBound(arr)
        If (arr(k, 1) = s1) And (DateDiff("n", s2, arr(k, 2)) <= 1440) And (arr(k, 3) <> "#") Then
           js = js + 1
           arr(k, 3) = "#"
        End If
    Next k
    Cells(i, 6) = js
Next i
Application.ScreenUpdating = True

1、你的问题我还是没弄清楚,所以我只能先产生一个订单数,至于转化率=工单/订单*100这个公式,我有疑问,我总觉得这个公式是反的;
2、如果同一车辆有多个工单,每个工单产生的订单是分别独立计算的,在“工单”表中的每一行都有一个统计结果就是这个原因。我不清楚你是否要把同一车辆牌照的工单所产生的订单都合并起来,如果需要合并,还需要做二次汇总,但这已经不是重点了。你要是会字典,简单几行代码就能搞定;
3、你可以在上述代码的基础上根据需要适当修改;
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-18 11:44 , Processed in 0.369579 second(s), 9 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表