EXCEL表格处理(宏优化或者提供一个更好的办法)

来源:百度知道 编辑:UC知道 时间:2024/05/03 05:10:22
一个工程材料管理用的表格需要处理,表头项目有7项,分别是“材料名称”“材料规格”“单位”“数量”“单价”“金额”“使用地点”。现在需要合并重复项,即同个地点的同种材料且单价相同的,数量合并。我编写了一个宏处理这个表格,宏如下:

Sub Macro1()
k = 10837 '共有10837行
For i = 1 To k '
For j = i + 1 To k '第一行为表头
If Cells(i, 7) = Cells(j, 7) Then '判断是否同一地点
If Cells(i, 1) = Cells(j, 1) Then '判断是否同一种材料
If Cells(i, 2) = Cells(j, 2) Then '判断规格是否相同
If Cells(i, 3) = Cells(j, 3) Then '判断单位是否相同
If Cells(i, 5) = Cells(j, 5) Then '判断单价是否相同
Cells(i, 4) = Cells(i, 4) + Cells(j, 4) '数量相加
Cells(i, 6) = Cells(i, 4) * Cells(i, 5) '计算金额
Rows(j).Select '删除重复项
Selection.Delete Shift:=xlUp '
j = j - 1 '
k = k - 1 '
End If
End If
End If
End If
End If
Next j
Next i
End Sub

因表格行数多,处理一次时间很长,同样操作经常有,恳请高手给出更好的处理办法或将这个小宏程序优化。

EXCEL的数据透视表就是干这个的!
1.选择表格
2.数据-数据透视表,点击完成
3.将“材料名称”“材料规格”“单位”“单价”“使用地点”拖拉到行字段(模板左侧)
将“数量”“金额”拖拉到数据区(模板中间区域)

完成!
---------
注:不需要行可以鼠标右键点击设置隐藏。

用数据透视表吧,如果一定要用VBA的话就用SQL语句吧,处理非常快.需要帮助的话hi我