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