macros合并名称并从多列中添加数量

我有一个Excel模板,作为我们部门的一个工具,它有多个可以复制的工作表,它最终做的是从最初的几个工作表编译数据,以创build一个表单工作清单在我们的制造工厂生产。 每个订单项都包含一个数量,然后是一个核心材质和两个面。 这个列表是一个单独的表单,可以复制这个表单创build许多不同的列表,所有的表单都引用相同的前三张表中的数据。

我需要能够快速,并在一个有点自动化的过程中,从第一个列表的数据创build一个辅助列表。 次要清单需要告诉给我每个独特的核心,面子和支持者。 有些支持者和脸相同,所以应该加以巩固。

我已经有一个macros,可以让用户select一个范围的数据,然后它吐出数量和名称的综合列表。 问题是这只适用于3列数据,并使用第三列作为名称,第一列作为数量。 我还没有想出如何让它看到不完全相邻或超过3列的数据列。

我对电子表格公式更加满意,但是我认为如果我能弄明白的话,macros将是最好的解决scheme,因为这个电子表格的最终用户对于Excel的知识有限,而且我不想依靠他们记住一堆步骤。

第一列表 第二列表的开始

这是我迄今为止的macros。

Sub Macro1() Dim i, J, K, L, M, R1, R1F, C1F, Temp As Integer Dim SemiFinalData(500, 2) As Variant Dim FinalData(500, 2) As Variant i = J = 0 Set InputData = Application.InputBox(prompt:="Select the full range of Data (Qty Through Description)", Type:=8) R1 = InputData.Rows.Count 'Gets Data to Summarize and Counts the Number of Rows For i = 1 To R1 If InputData(i, 3) <> "" Then SemiFinalData(J, 0) = InputData(i, 1) SemiFinalData(J, 1) = InputData(i, 2) SemiFinalData(J, 2) = InputData(i, 3) J = J + 1 End If Next i 'Extracts Non-Blank Data into Array M = 0 For i = 0 To J - 1 'Loops for each value in SemifinalData L = 0 For K = 0 To J - 1 'Second loop for each value in SemifinalData If SemiFinalData(i, 2) = FinalData(K, 2) Then 'Counter for Duplication Test L = L + 1 End If Next K If L < 1 Then 'Tests for Duplication and Extracts Data to FinalData Array FinalData(M, 1) = SemiFinalData(i, 1) FinalData(M, 2) = SemiFinalData(i, 2) M = M + 1 End If Next i For i = 0 To M - 1 Temp = 0 For K = 0 To J - 1 If FinalData(i, 2) = SemiFinalData(K, 2) Then Temp = Temp + SemiFinalData(K, 0) End If Next K FinalData(i, 0) = Temp Next i Set OutputData = Application.InputBox(prompt:="Select the first Cell of Output Range (for Qty)", Type:=8) R1F = OutputData.Row C1F = OutputData.Column 'Gets Row/Column for Start of Output Range For K = 0 To 2 Cells(R1F, C1F + K).Select For i = 0 To M - 1 Selection = FinalData(i, K) ActiveCell.Offset(1, 0).Range("A1").Select 'Writes Data to Sheet Next i Next K End Sub 

本质上,我正在努力从第一个列表中的同一行的三种types的数据,并最好的方式来分开他们自己的行在第二张纸上。

你可能想看看使用Worksheets().range().AdvancedFilter(....)这可以帮助你select你正在寻找的数据更容易。 检查办公室vba参考了解更多详情。