根据时间戳将行组合在一起

时间:2015-11-26 14:24:33

标签: excel vba excel-vba

因此我在几周内处理了一些记录的数据,并且我正在尝试将数据组织成更易于阅读的视图,因为随着时间的推移数据会因为所有不同点在不同时间记录而发生偏差(每隔几秒钟)

这就是我的数据Example

是否有任何VBA代码或excel函数可以根据时间而不是第二行将数据组合成一行?

在这里,我使用=FLOOR(A1, "0:1")将时间戳舍入到分钟。

Time stamps modified

现在我只想组织数据,以便12:57的所有行数据都在1行而不是7行。

Time stamps merged idea

1 个答案:

答案 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开始。

enter image description here

enter image description here