我在Excel电子表格中有一列数字,这些数字由加速度计生成并由数据记录器记录。加速度计的问题在于,当它静止时会产生很多“噪声”值,这些值总是相同的:1.2753,1.6677,2.0601,2.5506,2.943和3.4335。
此列中的第一个值不是上述数字之一,表示加速度计开始检测运动的时间。同样地,不是上述数字之一的最后一个值表示加速度计停止检测运动的时间。
我使用上面的列生成Acceleration vs Time graph的VBA代码,但它也包含所有这些“噪音”值。我试图将这些开始和结束噪声值从列中删除,以便仅在图形上显示运动。
是否有某种方法可以使用VBA来确定列中的第一个值不是上述噪声值之一?我猜可以调整相同的代码来找到最后一个。
我希望我已经清楚地解释了这一点。我无法找到任何答案。
谢谢!
答案 0 :(得分:0)
以下是 A 列的示例。我们制作一个" 坏"值,然后循环查看每个项目的列,直到我们找到一个不是" 坏"
form_tag
这只是演示代码。您必须通过修复循环限制,列ID,响应等来调整它。
答案 1 :(得分:0)
这是时间和动作编码。
Sub StartWatch()
' store time in start column
Dim rngTemp As Range
Set rngTemp = ActiveSheet.Range("A65536").End(xlUp).Offset(1, 0)
rngTemp = Now()
End Sub
Sub StopWatch()
' store time in stop column
' copy previous formula down
Dim rngTemp As Range
Set rngTemp = ActiveSheet.Range("B65536").End(xlUp).Offset(1, 0)
rngTemp = Now()
rngTemp.Offset(-1, 1).AutoFill Destination:=Range(rngTemp.Offset(-1, 1), rngTemp.Offset(0, 1)), Type:=xlFillDefault
Range("D65536").End(xlUp).Offset(1, 0).Select
End Sub
答案 2 :(得分:0)
Option Explicit
Sub StartWatch()
' store time in start column
Dim rngTemp As Range
Set rngTemp = ActiveSheet.Range("A" & Rows.Count).End(xlUp).Offset(1, 0)
rngTemp = Now()
End Sub
Sub StopWatch()
' store time in stop column
' copy previous formula down
Dim rngTemp As Range
Set rngTemp = ActiveSheet.Range("B" & Rows.Count).End(xlUp).Offset(1, 0)
rngTemp = Now()
If rngTemp.Row <> 2 Then
rngTemp.Offset(-1, 1).AutoFill Destination:=Range(rngTemp.Offset(-1, 1), rngTemp.Offset(0, 1)), Type:=xlFillDefault
Range("D65536").End(xlUp).Offset(1, 0).Select
Else
rngTemp.Offset(, 1).Formula = "=$B2-$A2"
End If
End Sub
答案 3 :(得分:0)
Dim PASSWORD As String
On Error GoTo ERRORH:
PASSWORD = InputBox("Enter Password to Close file")
If PASSWORD = "learnmore" Then
Else
Cancel = True
End
If ERRORH:
If Err.Number = 13 Then
Err.Clear
Cancel = True
End If
答案 4 :(得分:0)
您甚至不必使用VBA,您可以在电子表格的特定范围内使用“噪声”值,并在数据中添加is_noise
列,该列使用{{ 1}}或VLOOKUP
函数来查看该值是否出现在噪声值表中。然后,您的图表将仅排除这些值。这样,您的电子表格也将更加灵活:如果弹出新的噪声值,您只需更改电子表格,而不必更新VBA代码。