Vba 根据Excel中另一个单元格中的值减去两个单元格

Vba 根据Excel中另一个单元格中的值减去两个单元格,vba,excel,Vba,Excel,我试图计算每几秒钟由运动敏感摄像机拍摄的动物的存在时间,只要摄像机前面有活动。我们假设,如果动物不存在6分钟,我们认为这是动物的新出现和新的数据点。 我试图创建一个宏来计算动物出现在摄像机前的持续时间。下面是一个例子,我想从几个记录中较高的值中减去带有**两颗星**的值。为了便于阅读,我在大于6分钟的时间值差周围加上了“散列标记” Photo # Date Time Difference of time Duration of visit 1 2/

我试图计算每几秒钟由运动敏感摄像机拍摄的动物的存在时间,只要摄像机前面有活动。我们假设,如果动物不存在6分钟,我们认为这是动物的新出现和新的数据点。 我试图创建一个宏来计算动物出现在摄像机前的持续时间。下面是一个例子,我想从几个记录中较高的值中减去带有**两颗星**的值。为了便于阅读,我在大于6分钟的时间值差周围加上了“散列标记”

 Photo # Date       Time        Difference of time     Duration of visit
    1   2/9/2012   *8:01:30 PM*      NA                      0:08:48                    
    2   2/9/2012    8:01:31 PM      0:00:01         
    3   2/9/2012    8:01:36 PM      0:00:05         
    4   2/9/2012    8:01:54 PM      0:00:18         
    5   2/9/2012    8:02:36 PM      0:00:42         
    6   2/9/2012    8:02:48 PM      0:00:12         
    7   2/9/2012    8:03:07 PM      0:00:19         
    8   2/9/2012    8:03:23 PM      0:00:16         
    9   2/9/2012    8:04:18 PM      0:00:55         
    10  2/9/2012    8:04:42 PM      0:00:24         
    11  2/9/2012    8:05:02 PM      0:00:20         
    12  2/9/2012    8:05:52 PM      0:00:50         
    13  2/9/2012    8:07:08 PM      0:01:16         
    14  2/9/2012    8:08:59 PM      0:01:51         
    15  2/9/2012    8:10:09 PM      0:01:10         
    16  2/9/2012  **8:10:18 PM**    0:00:09         
    17  2/9/2012   *8:18:08 PM*    #0:07:50#                0:01:22     
    18  2/9/2012    8:18:11 PM      0:00:03         
    19  2/9/2012    8:18:23 PM      0:00:12         
    20  2/9/2012    8:18:34 PM      0:00:11         
    21  2/9/2012  **8:19:30 PM**    0:00:56         
    22  2/10/2012  *8:36:51 AM*   #12:17:21#                0:01:44     
    23  2/10/2012   8:38:00 AM      0:01:09         
    24  2/10/2012   8:38:06 AM      0:00:06         
    25  2/10/2012   8:38:08 AM      0:00:02         
    26  2/10/2012   8:38:17 AM      0:00:09         
    27  2/10/2012   8:38:33 AM      0:00:16         
    28  2/10/2012 **8:38:35 AM**    0:00:02         
    29  2/12/2012   9:15:00 AM     #0:36:25#                     X      
我从几个例子中学习过,包括,可能是最接近的。我开发了以下草稿宏,但我是VBA新手,无法将各个部分装配在一起

Sub CalculateDuration()

Dim duration As Date

'I basically want this to mean search down row D (Difference of time column) for values that are greater than 6 minutes

duration = Cells(Rows.Count, "D").End(xlUp).Row
    For Each cell In Range("D:D")
        If cell.Value >= Range("G2").Value Then

'Cell G2 has the 6 minute value in it (i did it this way since it's set as a time value) although I could also add a 00:06:00 if that would work.

              ActiveCell.Offset(0, 1).Value = X - ActiveCell.Offset(0, -1).Value

              'I need to point the value of X to be the next value in column C that is just one row higher than the next value in Column D that's >= 0:06:00 minutes. I'm not sure the best way to go about that... perhaps a nested if/then?

'I also think I may need something to make this write or end properly...

              End If
    Next

End Sub

提前感谢您提供的任何帮助。

它不使用VBA,但可以采用这些公式并将其插入VBA代码中

这是我的结果:

A、B、C列是数据

D2单元:

=B2+C2
单元格E2:

=IF(ROW(D2)=2,0,D2-D1)
单元格F2:

=IF(ROW(A2)=2,1,IF(E2<6/60/24,F1,F1+1))

它不使用VBA,但可以采用这些公式并将其插入VBA代码中

这是我的结果:

A、B、C列是数据

D2单元:

=B2+C2
单元格E2:

=IF(ROW(D2)=2,0,D2-D1)
单元格F2:

=IF(ROW(A2)=2,1,IF(E2<6/60/24,F1,F1+1))

它不使用VBA,但可以采用这些公式并将其插入VBA代码中

这是我的结果:

A、B、C列是数据

D2单元:

=B2+C2
单元格E2:

=IF(ROW(D2)=2,0,D2-D1)
单元格F2:

=IF(ROW(A2)=2,1,IF(E2<6/60/24,F1,F1+1))

它不使用VBA,但可以采用这些公式并将其插入VBA代码中

这是我的结果:

A、B、C列是数据

D2单元:

=B2+C2
单元格E2:

=IF(ROW(D2)=2,0,D2-D1)
单元格F2:

=IF(ROW(A2)=2,1,IF(E2<6/60/24,F1,F1+1))


为了澄清,您希望宏计算“访问期间”列吗?真实数据中是否有要首先剥离的
*
#
数据,或者这些数据仅用于示例中的说明?因此,您从一个干净的三列或四列数据集开始?DeanMacGrego,是的,我需要计算访问列的持续时间。实际数据没有*s或#。它们只是为了说明我需要计算的单元格。@Ken,原始数据集有30列,但为了便于说明,我已经去掉了这些列。我想我可以从这个方面着手。我对我问题的-1很好奇。我试着仔细地按照张贴说明来做。我意识到我对VBA代码的尝试是非常令人伤心的,这就是为什么吗?为了澄清,您希望宏计算“访问期间”列?真实数据中是否有要首先剥离的
*
#
数据,或者这些数据仅用于示例中的说明?因此,您从一个干净的三列或四列数据集开始?DeanMacGrego,是的,我需要计算访问列的持续时间。实际数据没有*s或#。它们只是为了说明我需要计算的单元格。@Ken,原始数据集有30列,但为了便于说明,我已经去掉了这些列。我想我可以从这个方面着手。我对我问题的-1很好奇。我试着仔细地按照张贴说明来做。我意识到我对VBA代码的尝试是非常令人伤心的,这就是为什么吗?为了澄清,您希望宏计算“访问期间”列?真实数据中是否有要首先剥离的
*
#
数据,或者这些数据仅用于示例中的说明?因此,您从一个干净的三列或四列数据集开始?DeanMacGrego,是的,我需要计算访问列的持续时间。实际数据没有*s或#。它们只是为了说明我需要计算的单元格。@Ken,原始数据集有30列,但为了便于说明,我已经去掉了这些列。我想我可以从这个方面着手。我对我问题的-1很好奇。我试着仔细地按照张贴说明来做。我意识到我对VBA代码的尝试是非常令人伤心的,这就是为什么吗?为了澄清,您希望宏计算“访问期间”列?真实数据中是否有要首先剥离的
*
#
数据,或者这些数据仅用于示例中的说明?因此,您从一个干净的三列或四列数据集开始?DeanMacGrego,是的,我需要计算访问列的持续时间。实际数据没有*s或#。它们只是为了说明我需要计算的单元格。@Ken,原始数据集有30列,但为了便于说明,我已经去掉了这些列。我想我可以从这个方面着手。我对我问题的-1很好奇。我试着仔细地按照张贴说明来做。我意识到我对VBA代码的尝试是非常令人伤心的,这是为什么?+1:我非常喜欢这种方法,更干净和可扩展。+1:我非常喜欢这种方法,更干净和可扩展。+1:我非常喜欢这种方法,更干净和可扩展。+1:我非常喜欢这种方法,更干净和可扩展。