因此我在几周内处理了一些记录的数据,并且我正在尝试将数据组织成更易于阅读的视图,因为随着时间的推移数据会因为所有不同点在不同时间记录而发生偏差(每隔几秒钟)
是否有任何VBA代码或excel函数可以根据时间而不是第二行将数据组合成一行?
在这里,我使用=FLOOR(A1, "0:1")
将时间戳舍入到分钟。
现在我只想组织数据,以便12:57的所有行数据都在1行而不是7行。
答案 0 :(得分:0)
他最简单的方法是使用数据透视表。只需将新时间作为行标签,将其他列作为Sigma值。由于数字每次只出现一次,因此您应该使用值字段设置的最大值,最小值或总和得到相同的答案。
为避免使用时间,请使用公式
设置辅助列Option Explicit
Sub CheckData()
Dim wb, wn As Worksheet
Dim i, j, m
Dim strA, strB, strC, strE, strF, NstrA, NstrB, NstrC, NstrE, NstrF As String
Dim FinalRowB, FinalRowN, count
Set wb = Sheets(1)
Set wn = Sheets(2)
FinalRowB = wb.Range("A900000").End(xlUp).Row
FinalRowN = wn.Range("A900000").End(xlUp).Row
For i = 2 To FinalRowN
NstrA = wn.Range("A" & i).Value
NstrA = Trim(NstrA)
NstrB = wn.Range("B" & i).Value
NstrB = Trim(NstrB)
NstrC = wn.Range("C" & i).Value
NstrC = Trim(NstrC)
NstrE = wn.Range("E" & i).Value
NstrE = Trim(NstrE)
NstrF = wn.Range("F" & i).Value
NstrF = Trim(NstrF)
For j = 2 To FinalRowB
strA = wb.Range("A" & j).Value
strA = Trim(strA)
strB = wb.Range("B" & j).Value
strB = Trim(strB)
strC = wb.Range("C" & j).Value
strC = Trim(strC)
strE = wb.Range("E" & j).Value
strE = Trim(strE)
strF = wb.Range("F" & j).Value
strF = Trim(strF)
'Check if A-B-C Matched? if yes then check E or F mark yellow if Different
If strA = NstrA And strB = NstrB And strC = NstrC Then
If strE <> NstrE Then
wn.Range("E" & j).Interior.ColorIndex = 6
Else
If strF <> NstrF Then
wn.Range("F" & j).Interior.ColorIndex = 6
Else: End If
End If
Else: End If
Next j
Next i
End Sub
从(比方说)L2开始,并将其用作数据透视表中的过滤器。
问题我可以看到,13:05和13:06的数据在两个不同的分钟之间分配,因此无法正常工作。
你可以通过使用另一个帮助列来获取组的第一次值并将其复制到组的其余部分来解决这个问题: -
=count(C2:J2)
从M2开始。