数据对齐程序1.1

不同的ID发送的数据,导致在时间轴上有错位,最后三列的数据,采样率不一样。

目前的办法是,选取一个ID的数据,选取临近ID最为接近的数据。

该程序为最初版本,后续的优化方案有两个:

1、把用字母表示的列标用带字符串的数组代替,这样可以把四个小程序简化为一个,用一个for i =1 to 4 循环就好。

(减少代码数量)

2、把表格中的数据写入数组,增快程序的速度。

 

Sub ts()

a = Time


n = Cells(Rows.Count, 2).End(xlUp).Row

Call ts1(n): ts2 (n): ts3 (n): ts4 (n)

b = Time - a

MsgBox b, n

End Sub

Sub ts1(n)

For i = 2 To n
If Range("L" & i) <> "" Then

j = Range("M" & i - 1).End(xlDown).Row

If j - i < 3 Then

Range("M" & j).Resize(1, 3).Cut Range("M" & i).Resize(1, 3)
End If: End If:  Debug.Print "1---" & i
 
Next i



End Sub

Sub ts2(n)

For i = 2 To n
If Range("I" & i) <> "" Then

j = Range("L" & i - 1).End(xlDown).Row
If j - i < 3 Then
Range("L" & j).Resize(1, 4).Cut Range("L" & i).Resize(1, 4)
End If: End If:  Debug.Print "2---" & i

Next i

End Sub

Sub ts3(n)
For i = 2 To n
If Range("F" & i) <> "" Then
j = Range("I" & i - 1).End(xlDown).Row
If j - i < 3 Then
Range("I" & j).Resize(1, 7).Cut Range("I" & i).Resize(1, 7)
End If: End If:  Debug.Print "3---" & i
Next i

End Sub



Sub ts4(n)
For i = 2 To n
If Range("B" & i) <> "" Then
j = Range("F" & i - 1).End(xlDown).Row
If j - i < 3 Then
Range("F" & j).Resize(1, 10).Cut Range("F" & i).Resize(1, 10)
End If: End If:  Debug.Print "4---" & i
Next i

End Sub

 

posted @ 2020-09-03 20:48  redufa  阅读(221)  评论(0)    收藏  举报