VBA Excel-将某些单元格总计相加,执行计算,在合并单元格中返回结果

VBA Excel-将某些单元格总计相加,执行计算,在合并单元格中返回结果,vba,excel,merge,Vba,Excel,Merge,我有4列:客户|订单号|托盘|所需卡车 每个客户可以有多个订单,每个订单可以有多个托盘。我试图计算出所需的卡车数量(将每个客户所有订单的所有托盘总数除以8)。棘手的是,无论有多少订单,我都需要合并“所需卡车”的单元格。例如: 订单号-订单号-托盘-所需卡车 客户1-订单1-3个托盘 Customer1-订单2-12个托盘-3(这与上面和下面的单元格合并) 客户1-订单4-2个托盘 客户2-订单7-11托盘 Customer2-Order9-1托盘-3(与上面和下面的单元格合并) 客户2-订单3-

我有4列:客户|订单号|托盘|所需卡车

每个客户可以有多个订单,每个订单可以有多个托盘。我试图计算出所需的卡车数量(将每个客户所有订单的所有托盘总数除以8)。棘手的是,无论有多少订单,我都需要合并“所需卡车”的单元格。例如:

订单号-订单号-托盘-所需卡车

客户1-订单1-3个托盘

Customer1-订单2-12个托盘-3(这与上面和下面的单元格合并)

客户1-订单4-2个托盘

客户2-订单7-11托盘

Customer2-Order9-1托盘-3(与上面和下面的单元格合并)

客户2-订单3-6托盘

我已经尝试过使用透视表,但似乎不可能实现我的第三点。我认为最好的方法是使用VBA,但我似乎找不到一个好方法


任何帮助都将不胜感激

这应该能解决你的问题

在运行此宏之前,必须在表中选择要“修复”的单元格。您必须知道的重要一点是,宏运行后不会出现cnrt-z,所以在测试之前请保存您的文件

Sub fixtable()

Dim obj As Range
Dim RangetoFix As Range
Dim Palletes As Integer

Set RangetoFix = Selection.CurrentRegion
Set obj = RangetoFix.Cells(2, 1)

Palletes = RangetoFix.Cells(2, 3).Value

For i = 3 To RangetoFix.Rows.Count + 1
    If RangetoFix.Cells(i, 1).Value = obj.Value Then
        Palletes = Palletes + RangetoFix.Cells(i, 3).Value
    Else
        Cells(obj.Row, obj.Column + 3).Value = Palletes / 8
        Range(Cells(obj.Row, obj.Column + 3), RangetoFix.Cells(i - 1, 4)).Merge
        Set obj = RangetoFix.Cells(i, 1)
        Palletes = RangetoFix.Cells(i, 3).Value
    End If
Next

End Sub

我看到您已按客户编号合并了单元格,即Customer1和Customer2,分别为3个订单。为什么不能对透视和计算字段执行此操作?这是一个格式化问题。。。“所需卡车”列显示行项目(如果您想按客户显示,则需要小计。但不可能删除轴中的行项目,因此,例如,它将在卡车要求列中显示以下内容:0.375、1.5、0.25。然后在底部进行小计。它看起来有点凌乱,工作得很好。我唯一更改的是将'Tr'的值四舍五入ucks Required“使用Application.WorksheetFunction.RoundUp()最大为最接近的整数。