如何在 Excel 中将多行的多个值相加,并最终得到每行 1 个唯一 ID,并在列中计算总和

如何在 Excel 中将多行的多个值相加,并最终得到每行 1 个唯一 ID,并在列中计算总和

基本上,我有一个巨大的数据列表,其中包含多行唯一 ID(每个 ID 可以出现在多行中)。然后,我有多个变量,这些变量没有特定的顺序,与一个值相关联。我想将所有内容合并到一行中,每个唯一 ID 都有一列,每个变量都有一列,还有值的总和。

在此处查看虚拟数据集http://www.filedropper.com/help_1

最终格式应为

唯一 ID 变量_X 变量_Y 变量_Z
1
2
3
4
5

相关列中每个变量的总和

我尝试过几种方法,例如转置或尝试将变量连接到唯一 ID。手动使用过滤器可以轻松完成此操作,但我有 1000 个唯一 ID,我想加快此过程。虽然我正在学习 Python 和 VBA,但我还远不能解决这个问题!

非常感谢!!

答案1

我对一些闲置的旧代码进行了一些编辑。您可以尝试一下,看看是否有效:

Sub IDsort()
Dim list As Range, c As Range, nxt As Long
Set list = ActiveSheet.Range(Range("A2"), Range("A65000").End(xlUp))
For Each c In list
    If Not ActiveSheet.Range("E" & Cells(Rows.Count, 5).End(xlUp).Row).Value = c.Value Then nxt = Cells(Rows.Count, 5).End(xlUp).Offset(1, 0).Row
    Range("E" & nxt).Value = c
    Select Case UCase(c.Offset(0, 1))
        Case "X"
            Range("F" & nxt).Value = Range("F" & nxt).Value + c.Offset(0, 2)
        Case "Y"
            Range("G" & nxt).Value = Range("G" & nxt).Value + c.Offset(0, 2)
        Case "Z"
            Range("H" & nxt).Value = Range("H" & nxt).Value + c.Offset(0, 2)
    End Select

Next c
End Sub

这将遍历列表,并将每个变量的所有数字相加,然后将它们打印到列中EH
要求列表按 ID 排序,因为只需检查每行是否具有相同的 ID,而不是检查具体是哪个 ID。

怎么运行的:

因此,首先,我们将list变量设置为第一行值到最后一行。
然后我们循环遍历所有单元格for each。在这种情况下,变量c将返回单元格的值。

然后If检查列中的前一个条目是否E与当前 ID 相同,如果不同,则nxt指向下一个空行。
这应该FALSE在第一次运行时返回(我假设是一个空列表),否则代码将失败,因为变量nxt没有值。
我认为这不会成为问题,但可以通过nxt = 2在循环之前声明来轻松修复。

然后它将 ID 放在 Column 中E,并根据变量将列中的值添加CFGH

这是我在您的示例工作簿上运行它的结果:

在此处输入图片描述

相关内容