如何在VBA中编写此单元格引用的Excel公式,以便在MS Access中使用:(b2-a1)

如何在VBA中编写此单元格引用的Excel公式,以便在MS Access中使用:(b2-a1),vba,Vba,这是一个在Excel中进行的非常简单的计算,但如何在Access中使用表中不同记录中的两个字段来进行这一计算,我感到困惑。我的一个应用程序需要找出操作停止时间和下一个开始时间之间的差异。任何帮助都将不胜感激。我是VBA新手。根据您的数据,有许多方法可以解决这个问题,这使得发布有关SQL的问题的数据非常重要。例如: Sub samPle() Dim startTime As Date Dim endTime As Date startTime = Time '''Your Code endT

这是一个在Excel中进行的非常简单的计算,但如何在Access中使用表中不同记录中的两个字段来进行这一计算,我感到困惑。我的一个应用程序需要找出操作停止时间和下一个开始时间之间的差异。任何帮助都将不胜感激。我是VBA新手。

根据您的数据,有许多方法可以解决这个问题,这使得发布有关SQL的问题的数据非常重要。例如:

Sub samPle()
Dim startTime As Date
Dim endTime As Date

startTime = Time
'''Your Code


endTime = Time

Debug.Print DateDiff("n", startTime, endTime) ' difference in minutes

End Sub
表:

ID  EventTime           EventType
1   17/02/2013 08:52:00 start
2   17/02/2013 09:52:00 stop
3   17/02/2013 11:52:00 start
4   17/02/2013 15:52:00 stop
SQL:

结果:

ID  Start               EventType   Stop                RunTime
1   17/02/2013 08:52:00 start       17/02/2013 09:52:00     60
3   17/02/2013 11:52:00 start       17/02/2013 15:52:00     240
重新评论

SELECT a.id, 
       a.eventtime                         AS Start, 
       a.eventtype, 
       (SELECT TOP 1 eventtime 
        FROM   times b 
        WHERE  eventtype = "stop" 
               AND eventtime > a.eventtime 
        ORDER  BY eventtime, 
                  id)                      AS Stop, 
       Datediff("n", [start], [stop])      AS RunTime, 
       (SELECT TOP 1 eventtime 
        FROM   times b 
        WHERE  eventtype = "start" 
               AND eventtime > a.eventtime 
        ORDER  BY eventtime, 
                  id)                      AS NextStart, 
       Datediff("n", [start], [nextstart]) AS StartDiff, 
       Datediff("n", [stop], [nextstart])  AS DownTime 
FROM   times AS a 
WHERE  (( ( a.eventtype ) = "start" )) 
ORDER  BY a.eventtime; 

这是入口吗?您能提供一些示例数据吗?根据您在下面的评论,您似乎正在尝试比较两个单独的记录。我们需要更多的数据来帮助您,因为Access术语中的“B2-A1”稍微复杂一些。我尝试使用两个单独的记录。我能帮你什么忙?这里有几个开始时间:8:15,8:26,8:42,9:01,9:30。结束时间:8:21,8:32,8:58,9:19,9:43。第一个差分为null,然后是0:05、0:10、0:03、0:11。我在想这个过程可以调用(stoptime)和next(startime)进行循环。有没有办法给记录编号或构建具有不同起始值的数组?对不起,如果我重复我的评论。我不习惯论坛。你桌上还有什么。我想我期待的是一个看起来像桌子的东西。所有相关数据都很重要。i、 e.需要知道为什么选择一个开始时间而不是另一个。例如焊接操作。该表确定了焊接编号、日期、开始时间和结束时间。根据开始和停止时间,我需要找出1)焊工正在焊接的时间(停止时间-开始时间)和2)焊工不焊接的时间,即两次焊接之间的时间(下一次开始时间-最后一次结束时间)。焊接开始停止计算持续时间17:15 7:22 0:07------28:11 8:24 0:13 0:49 3 8:28 8:50 0:22 0:04 4 8:58 9:12 0:14 0:08 5 10:06 10:24 0:18 0:54现场开始时间18:04开始时间28:10现场结束时间18:05StopTime2 8:11需要EndTime1-StartTime2=:05Field1 StartTime1 8:04 StartTime2 8:10 Field2 EndTime1 8:05 StopTime2 8:11需要EndTime1-StartTime2=:05msgbox DateDiff(“s”,startTime,endTime)”,表示秒数的差异谢谢。我还需要开始时间之间的时间,或者在上述情况下,120分钟。使用第一句话中的想法,您可以添加其他差异。当您有特定要求时,最好发布示例数据。在VBA中,您指的是什么?您可以将查询另存为查询,并将其与记录集或表单一起使用,同样,您也可以将sql作为字符串复制到变量,并使用该变量,或将sql作为字符串复制到表单的记录源。要将sql另存为查询,只需将其粘贴到“查询设计”窗口的sql视图中,并在对系统进行适当更改后保存或运行查询。VBA=Visual Basic for Applications。我们目前不使用任何编程语言。我正在努力学习如何执行未经MicroSoft预编程的程序。
SELECT a.id, 
       a.eventtime                         AS Start, 
       a.eventtype, 
       (SELECT TOP 1 eventtime 
        FROM   times b 
        WHERE  eventtype = "stop" 
               AND eventtime > a.eventtime 
        ORDER  BY eventtime, 
                  id)                      AS Stop, 
       Datediff("n", [start], [stop])      AS RunTime, 
       (SELECT TOP 1 eventtime 
        FROM   times b 
        WHERE  eventtype = "start" 
               AND eventtime > a.eventtime 
        ORDER  BY eventtime, 
                  id)                      AS NextStart, 
       Datediff("n", [start], [nextstart]) AS StartDiff, 
       Datediff("n", [stop], [nextstart])  AS DownTime 
FROM   times AS a 
WHERE  (( ( a.eventtype ) = "start" )) 
ORDER  BY a.eventtime;