Excel 计算重复行之间的更改

Excel 计算重复行之间的更改,excel,vba,Excel,Vba,我有从第三方程序导出的数据。数据始终以范围的形式存在,并且每次导出时都是一个新的未保存excel文件 数据基本上包含这种格式 169 31.0 169 29.0 12 01.31 03 22.0 12 1.09 03 21.5 对不起,我是这个网站的新手。本质上,一列是与成分相关联的代码,第二列是成分的重量。你会看到复制品,因为面包店在前后称量它们。我想计算一下每种配料的用量。因此,最终的输出将是一个表格,其中一列是唯一成分代码的列表,另一列是前后的差异 我尝试过使用透视表,但这就是总结。差异

我有从第三方程序导出的数据。数据始终以范围的形式存在,并且每次导出时都是一个新的未保存excel文件

数据基本上包含这种格式

169 31.0
169 29.0
12 01.31
03 22.0
12 1.09
03 21.5
对不起,我是这个网站的新手。本质上,一列是与成分相关联的代码,第二列是成分的重量。你会看到复制品,因为面包店在前后称量它们。我想计算一下每种配料的用量。因此,最终的输出将是一个表格,其中一列是唯一成分代码的列表,另一列是前后的差异

我尝试过使用透视表,但这就是总结。差异公式需要一个单独的列来进行比较。不幸的是,我没有


有没有更简单的方法?我希望数据透视表的功能与数据透视表基本相同,但使用的是差异而不是总和。

假设您的数据位于a列到B列,并从第1行开始,您可以尝试以下代码:

Sub Main2()
    Dim cell As Range

    With CreateObject("Scripting.Dictionary")
        For Each cell In Range("A1").CurrentRegion.Columns(1).Cells
            If .Exists(cell.Value) Then
                .Item(cell.Value) = .Item(cell.Value) - cell.Offset(, 1).Value
            Else
                .Item(cell.Value) = cell.Offset(1).Value
            End If
        Next cell
        Range("C1").Resize(.Count).Value = Application.Transpose(.Keys)
        Range("D1").Resize(.Count).Value = Application.Transpose(.Items)
    End With
End Sub

C列和D列中的输出提供了一个表样本,其中包含一些记录以及预期的输出。