合并字段时将多行排序为一行

时间:2018-11-23 13:11:14

标签: vba

请在照片中看到我要实现的目标的基本示例,表2显示了我要从表1实现的目标。任何帮助将不胜感激。谢谢。

编辑:由于前面的解释含糊不清,我添加了一张实际表的图像并重新编写了下面的问题。

ACTUAL TABLE

我需要一个宏,该宏将贯穿显示的切割清单并压缩数据。

如果“ L”,“ W”,“ T”,“材料”,“表面贴面”和“边缘贴面/涂胶”具有相同的条目,则需要组合。切割清单的行数始终会根据作业大小而变化。

我需要合并的零件数量和“零件代码”的总数量(“数量”),以便车间可以在切割过程中标记每个零件。

总计中将混合包含单独数据的行,因此不需要合并。

合并后剩下的行将需要删除。

我希望这更清楚!谢谢

1 个答案:

答案 0 :(得分:0)

尽管您在屏幕截图之前提供了很好的功能->之后,但我仍然有很多不确定因素:

  • 对零件代码进行分组的标准是什么? L,W,T和材料是否必须相同,还是我们只是附加所有零件代码并添加数量?
  • 输入和输出表是否相同?例如我们应该删除行还是将输出打印到其他地方?

下面的代码将为您显示的确切案例创建所需的输出,但是我敢肯定,对于您的真实案例而言,这将是简单化的(例如,当前仅打印一行并将所有内容添加到第一部分)码)。如果您能解释以上内容,那就太好了

Sub Test()

Dim i As Integer
Dim rInput As Range
Dim vArr As Variant

Set rInput = Range("B5:G8")
vArr = rInput

For i = LBound(vArr) + 1 To UBound(vArr)
    If vArr(i, 3) = vArr(1, 3) And _
        vArr(i, 4) = vArr(1, 4) And _
        vArr(i, 5) = vArr(1, 5) And _
        vArr(i, 6) = vArr(1, 6) Then
            vArr(1, 1) = vArr(1, 1) & "," & vArr(i, 1)
            vArr(1, 2) = vArr(1, 2) + vArr(i, 2)
    End If
Next i

rInput.Offset(rInput.Rows.Count + 3).Resize(1, rInput.Columns.Count) = vArr

End Sub