我在同一个Excel中有两张工作表。
第一个excel工作表包含以下字段
No Material 10th july 11th july
1 DATUM DCP ESD Black
2 DATUM DCP ESD Blue 我的第二个工作表包含以下字段
No Date Material Stock size+Wastage
1 10th july DATUM DCP ESD Black 283.47
2 10th july DATUM DCP ESD Black 661.6
3 11th july DATUM DCP ESD Blue 665.6
4 11th july DATUM DCP ESD Black 50.8我希望在第一个工作表中得到以下预期结果:
No Material 10th july 11th july
1 DATUM DCP ESD Black 945.07 50.8
2 DATUM DCP ESD Blue 665.6发布于 2017-07-20 15:05:35
忘记宏,只需使用数据透视表。
在将更多数据添加到透视表从中提取的集合中后,您始终可以刷新透视表。
这是数据透视表的样子:

如何在数据透视表中设置字段:

发布于 2017-07-20 15:00:38
这里不需要VBA。忽略第一个工作表,并从第二个工作表创建数据透视表。
发布于 2017-07-20 15:31:16
Sub summ()
With Worksheets("Sheet2")
.Range("B2:B" & Range("B" & "65536").End(xlUp).row).Name = "Dates"
.Range("C2:C" & Range("C" & "65536").End(xlUp).row).Name = "Materials"
.Range("D2:D" & Range("D" & "65536").End(xlUp).row).Name = "Numbers"
End With
With Worksheets("Sheet1")
.Cells(2, 3).FormulaR1C1 = _
"=SUMPRODUCT( (Worksheets("Sheet2")!Dates=R1C) * (Worksheets("Sheet2")!Materials=RC1) * (Worksheets("Sheet2")!Numbers)"
.Range(Cells(2, 3).Address).AutoFill _
Destination:=Range(Cells(2, 3).Address, Cells(2, Y)), Type:=xlFillDefault
.Range(Cells(2, X).Address).AutoFill _
Destination:=Range(Cells(2, Y).Address, Cells(X, Y)), Type:=xlFillDefault
End Sub 其中"Sheet1“和"Sheet2”分别是第一个和第二个工作表的名称。
其中X是最后使用的行(number_of_materials - 1)。
其中Y是上次使用的列(number_of_dates - 1)。
因为这不是一个复杂的任务,所以我建议使用公式,而不是宏。
https://stackoverflow.com/questions/45207106
复制相似问题