tranphuson
Thành viên thường trực




- Tham gia
- 14/8/09
- Bài viết
- 268
- Được thích
- 10
- Giới tính
- Nam
Cho nó liền mạch được khôngVui lòng giúp mình tổng hợp bằng VBA từ Sheet "Order" vào Sheet "Tổng" theo các điều kiện mình ở các Cột C, D, E, G đã giải thích trong file đính kèm
Xin cảm ơn
View attachment 269653
Xin lỗi liền mạch là liền cột với nhau hay là mã khách. Vì nhiều lúc khách đặt hàng ít, lúc đặt nhiều nên mẫu này khoảng 29 dòng theo hệ thống đơn hàng tách biệt ra từng mã kháchCho nó liền mạch được không
Thấy kết quả nó có kiểu chung 1 form. sao ko trả kết quả liền mạch nhau theo dòng mà lại cach 30 dòng cho 1 khách hàng vậyXin lỗi liền mạch là liền cột với nhau hay là mã khách. Vì nhiều lúc khách đặt hàng ít, lúc đặt nhiều nên mẫu này khoảng 29 dòng theo hệ thống đơn hàng tách biệt ra từng mã khách
Như mình giải thích là theo form của hệ thống thì phải tách ra theo mẫu vậy, tách riêng từng mã khách và theo số lượng dòng như nhau (vì có lúc khách đặt ít hàng 2-3 dòng có lúc đặt 29 dòng). Nếu được thì giúp mình số dòng đúng theo số lượng đặt nhưng cũng tách riêng từng khách hàng riêng (không nhất thiết 30 dòng cũng được). Cảm ơnThấy kết quả nó có kiểu chung 1 form. sao ko trả kết quả liền mạch nhau theo dòng mà lại cach 30 dòng cho 1 khách hàng vậy
Bạn xem thử file này, có thêm 1 dòng đếm số mã hàng từng KH có số lượng đặt.Nếu được thì giúp mình số dòng đúng theo số lượng đặt nhưng cũng tách riêng từng khách hàng riêng (không nhất thiết 30 dòng cũng được). Cảm ơn
Thử code đúng theo form mẫu trong fileNhư mình giải thích là theo form của hệ thống thì phải tách ra theo mẫu vậy, tách riêng từng mã khách và theo số lượng dòng như nhau (vì có lúc khách đặt ít hàng 2-3 dòng có lúc đặt 29 dòng). Nếu được thì giúp mình số dòng đúng theo số lượng đặt nhưng cũng tách riêng từng khách hàng riêng (không nhất thiết 30 dòng cũng được). Cảm ơn
Sub XYZ()
Dim Arr(), Res(), i&, iR&, iC&, KC&, j&, K&, X&
KC = 30: X = -28
Application.ScreenUpdating = False
With Sheets("TONG")
For i = 2 To 1000 Step 30
If .Range("C" & i).Value = "" Then Exit For
.Range("C" & i).Resize(29, 5).Clear
Next
End With
With Sheets("Order")
iR = .Range("B" & Rows.Count).End(3).Row
iC = .Cells(2, "AAA").End(1).Column
Arr = .Range("A2").Resize(iR, iC).Value
End With
For j = 10 To UBound(Arr, 2)
K = 0
ReDim Res(1 To KC - 1, 1 To 5)
For i = 2 To UBound(Arr, 1)
If Arr(i, j) > 0 Then
K = K + 1
Res(K, 1) = Arr(1, j)
Res(K, 2) = Arr(i, 2)
Res(K, 3) = Arr(i, j)
Res(K, 4) = K
Res(K, 5) = Arr(i, 2)
End If
Next
With Sheets("TONG")
If K Then
X = X + KC
.Range("B1:R1").Copy .Range("B" & X - 1)
.Range("C" & X).Resize(K, 5).Value = Res
End If
End With
Next
Application.ScreenUpdating = True
MsgBox "Done", vbOKOnly
End Sub
Mảng miếc thế này tốc độ nhanh phải biết nhểThử code đúng theo form mẫu trong file
Mã:Sub XYZ() Dim Arr(), Res(), i&, iR&, iC&, KC&, j&, K&, X& KC = 30: X = -28 Application.ScreenUpdating = False With Sheets("TONG") For i = 2 To 1000 Step 30 If .Range("C" & i).Value = "" Then Exit For .Range("C" & i).Resize(29, 5).Clear Next End With With Sheets("Order") iR = .Range("B" & Rows.Count).End(3).Row iC = .Cells(2, "AAA").End(1).Column Arr = .Range("A2").Resize(iR, iC).Value End With For j = 10 To UBound(Arr, 2) K = 0 ReDim Res(1 To KC - 1, 1 To 5) For i = 2 To UBound(Arr, 1) If Arr(i, j) > 0 Then K = K + 1 Res(K, 1) = Arr(1, j) Res(K, 2) = Arr(i, 2) Res(K, 3) = Arr(i, j) Res(K, 4) = K Res(K, 5) = Arr(i, 2) End If Next With Sheets("TONG") If K Then X = X + KC .Range("B1:R1").Copy .Range("B" & X - 1) .Range("C" & X).Resize(K, 5).Value = Res End If End With Next Application.ScreenUpdating = True MsgBox "Done", vbOKOnly End Sub
Cảm ơn bạn đã giúp đỡBạn xem thử file này, có thêm 1 dòng đếm số mã hàng từng KH có số lượng đặt.