Excel VBA代码,用于确定列中不是指定数字

时间:2016-09-27 13:53:16

标签: excel-vba vba excel

我在Excel电子表格中有一列数字,这些数字由加速度计生成并由数据记录器记录。加速度计的问题在于,当它静止时会产生很多“噪声”值,这些值总是相同的:1.2753,1.6677,2.0601,2.5506,2.943和3.4335。

此列中的第一个值不是上述数字之一,表示加速度计开始检测运动的时间。同样地,不是上述数字之一的最后一个值表示加速度计停止检测运动的时间。

我使用上面的列生成Acceleration vs Time graph的VBA代码,但它也包含所有这些“噪音”值。我试图将这些开始和结束噪声值从列中删除,以便仅在图形上显示运动。

是否有某种方法可以使用VBA来确定列中的第一个值不是上述噪声值之一?我猜可以调整相同的代码来找到最后一个。

我希望我已经清楚地解释了这一点。我无法找到任何答案。

谢谢!

5 个答案:

答案 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代码。