Performance Excel ETA计算器。扭曲

Performance Excel ETA计算器。扭曲,performance,excel,time,distance,Performance,Excel,Time,Distance,使用Excel,我试图计算从出发日期、时间字段和距离字段计算出的预计到达时间(ETA)。速度是最困难的部分,因为它随时间而变化 现在,让我们假设根据一天中的时间,只有两种速度可能。上午8点到晚上7点之间的速度等于16。在晚上7点到早上8点之间,速度等于8。实际的数字可能会有很大的不同,所以不要假设夜间的速度是一半 我想输入一个日期和时间,让公式根据一天中的时间利用距离和适当的速度来计算ETA e、 g.从1月1日下午6点开始的500英里行程将导致16时1小时、8时13小时、16时11小时、8时1

使用Excel,我试图计算从出发日期、时间字段和距离字段计算出的预计到达时间(ETA)。速度是最困难的部分,因为它随时间而变化

现在,让我们假设根据一天中的时间,只有两种速度可能。上午8点到晚上7点之间的速度等于16。在晚上7点到早上8点之间,速度等于8。实际的数字可能会有很大的不同,所以不要假设夜间的速度是一半

我想输入一个日期和时间,让公式根据一天中的时间利用距离和适当的速度来计算ETA

e、 g.从1月1日下午6点开始的500英里行程将导致16时1小时、8时13小时、16时11小时、8时13小时、16时6.25小时。1月3日下午2:15到达,总共44.25小时

日期加上44.25小时是愚蠢的简单,但基于开始时间和特定时间内可能的速度计算小时数却让我不知所措

[编辑]
哇,你为此付出了很多努力,我真的很感激你的努力。但是,它没有做我想做的

我试图将开始日期和时间以及到目的地的距离作为输入。然后,它必须使用白天不同的速度计算ETA。平均数根本不行。每次行程都有一个精确的ETA,行驶固定距离的时间将因开始时间而显著不同。

您可以使用并调整以下代码:

选项显式
公共功能ETA(dStart As Date,dEnd As Date)As Date
双色调暗lAvg
Dim iNumDays为整数,i小时为整数
暗淡的速度和长的一样快
Dim dTemp作为日期
Dim dFinal作为日期
'获取全天的平均速度
lAvg=应用平均值(范围(“速度”))
'获取完整天数
iNumDays=CInt(dEnd-dStart)
“加上日子
dFinal=iNumDays*lAvg
'从开始到午夜每小时解析一次
'如果结束日期为午夜,则需要更正循环
如果小时(dEnd)=0,则
i小时=24小时
其他的
i小时=小时(分钟)
如果结束
dTemp=dStart
当时间值(dTemp)“00:00:00”和小时(dTemp)Hour(dStart)
lSpeed=Application.VLookup(格式(dTemp,“hh:mm AM/PM”),范围(“TimeSpeed”),2,False)
dFinal=DateAdd(“h”,lSpeed,dFinal)
'再分析一个小时(后退一步)
dTemp=DateAdd(“h”,-1,dTemp)
环
如果结束
ETA=dFinal
端函数
您必须使用:

  • TimeSpeed
    是范围:
    A2:B25
  • Speed
    是范围
    B2:B25
我上传了一个示例文件

如果有人有更好的办法来解决这个问题,欢迎你

您可以使用并修改以下代码:

选项显式
公共功能ETA(dStart As Date,dEnd As Date)As Date
双色调暗lAvg
Dim iNumDays为整数,i小时为整数
暗淡的速度和长的一样快
Dim dTemp作为日期
Dim dFinal作为日期
'获取全天的平均速度
lAvg=应用平均值(范围(“速度”))
'获取完整天数
iNumDays=CInt(dEnd-dStart)
“加上日子
dFinal=iNumDays*lAvg
'从开始到午夜每小时解析一次
'如果结束日期为午夜,则需要更正循环
如果小时(dEnd)=0,则
i小时=24小时
其他的
i小时=小时(分钟)
如果结束
dTemp=dStart
当时间值(dTemp)“00:00:00”和小时(dTemp)Hour(dStart)
lSpeed=Application.VLookup(格式(dTemp,“hh:mm AM/PM”),范围(“TimeSpeed”),2,False)
dFinal=DateAdd(“h”,lSpeed,dFinal)
'再分析一个小时(后退一步)
dTemp=DateAdd(“h”,-1,dTemp)
环
如果结束
ETA=dFinal
端函数
您必须使用:

  • TimeSpeed
    是范围:
    A2:B25
  • Speed
    是范围
    B2:B25
我上传了一个示例文件


如果有人有更好的办法来解决这个问题,欢迎你

我花了一段时间,但我完成了您需要的功能。日期需要格式化为“2011/01/01 18:00”(确保您正在读取的日期的单元格类型和函数结果单元格的类型为日期)。您可以轻松更改代码中速度1和2的值,以满足您的需要

功能ETA(ByVal myTime作为日期_
ByVal距离为日期的两倍
Application.ScreenUpdating=False
暗淡的开始时间为日期
双精度计数器
模糊结果为日期
暗淡的牛奶像双份的一样
“加上第一个小时
myTime=DateAdd(“h”,1,myTime)
而距离-英里级>=16
如果小时(myTime)>=8,小时(myTime)=8,小时(myTime)=7,则
myTime=DateAdd(“h”,1,myTime)
milesTraveled=milesTraveled+8
最小计数器=((距离-英里级)/16)*60
其他的

如果Hour(myTime)>=8和Hour(myTime)我花了一些时间,但我完成了您需要的函数。日期的格式应为“2011/01/01 18:00”(确保读取日期的单元格类型和函数结果单元格