|
发表于 2012-10-16 17:32
|
显示全部楼层
本楼为最佳答案
Sub test()
Dim mystr As String '定义字符串变量
Dim i, j, d1, d2, d3 As Integer '定义整形变量
Dim arr
Dim brr '定义数组
d1 = Sheet1.Range("b65536").End(xlUp).Row 'sheet1 中b列最后一个非空单元格行号赋给 d
d2 = Sheet2.Range("b65536").End(xlUp).Row
d3 = Sheet3.Range("b65536").End(xlUp).Row
For i = 2 To d2
mystr = Sheet2.Cells(i, 2) & Sheet2.Cells(i, 3) '把sheet2中的序号及材料名连接在一起,赋给变量mystr
For j = 2 To d1
If Sheet1.Cells(j, 2) & Sheet1.Cells(j, 3) = mystr Then '如果sheet1的序号及材料名连接一起与 mystr一致
arr = Sheet1.Range("d" & j).Resize(1, 21) '在sheet1找到的J行,单元格Dj向下1,向右21区域给数组(从自身数起)
Sheet2.Range("d" & i).Resize(1, UBound(arr, 2)) = arr '把数组arr写在sheet2相应的区域
End If
Next j
Next i
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'给 sheet3表填写平均
Sheet3.Range("a2").Resize(d3, 24).ClearContents '清空 sheet3
For m = 2 To d2
If Sheet2.Range("b" & m) = "平均" Then
brr = Sheet2.Range("a" & m).Resize(1, 24)
d3 = Sheet3.Range("b65536").End(xlUp).Row + 1 'sheet3 B列最后一个非空单元格行号+1
Sheet3.Range("a" & d3).Resize(1, 24) = brr
End If
Next m
End Sub
|
|