|
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件 ★ 免费下载 ★ ★ 使用帮助★
'缺少了2个规则,根据结果给加上去了。另外这个"如果"工作表就是结果的吧
'看了你前面的几个主题帖都类似,只是在不停的改变条件,,,
Option Explicit
Sub test()
Dim arr, i, j, k, kk, p, pp, m, flag As Boolean
With Sheets("bom")
arr = .Range("a2:e" & .Cells(Rows.Count, "a").End(xlUp).Row + 1)
End With
ReDim brr(1 To 2 * UBound(arr, 1), 8)
For i = 1 To UBound(arr, 1) - 1
For j = i To UBound(arr, 1) - 1
If Len(arr(j, 1)) > 0 And Len(arr(j, 3)) = 0 Then p = j: Exit For
Next
For j = p To UBound(arr, 1) - 1
If Len(arr(j + 1, 1)) + Len(arr(j + 1, 2)) = 0 Or Len(arr(j + 1, 1)) > 0 And Len(arr(j + 1, 3)) = 0 Then
m = m + 1: brr(m, 0) = arr(p, 1): brr(m, 4) = arr(p, 2): brr(m, 6) = arr(p, 4)
For k = p + 1 To j
If arr(k, 1) = 1 Then
m = m + 1
brr(m, 0) = arr(p, 1): brr(m, 1) = 1: brr(m, 4) = arr(k, 2): brr(m, 5) = arr(k, 3)
brr(m, 6) = arr(k, 4): brr(m, 7) = arr(k, 5)
Else
flag = False
For kk = k To j
If arr(k, 1) <> arr(kk, 1) Then pp = kk - 1: Exit For
If arr(kk, 2) = "Z" Then flag = True
If kk = j Then pp = kk
Next
If flag Or k = pp Then
For kk = k To pp
m = m + 1
brr(m, 0) = arr(p, 1): brr(m, arr(kk, 1)) = arr(kk, 1): brr(m, 4) = arr(kk, 2): brr(m, 5) = arr(kk, 3)
brr(m, 6) = arr(kk, 4): brr(m, 7) = arr(kk, 5)
Next
End If
k = pp
End If
Next
i = j: Exit For
End If
Next
Next
Sheets("如果").[a2].Resize(UBound(brr, 1), UBound(brr, 2) + 1) = brr
End Sub |
评分
-
1
查看全部评分
-
|