Tổng hợp dữ liệu khách hàng vào Sheet Tổng

Liên hệ QC

tranphuson

Thành viên thường trực
Tham gia
14/8/09
Bài viết
249
Được thích
9
Giới tính
Nam
Vui 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
1637915018988.png
 

File đính kèm

  • Tổng hợp đơn hàng.xlsx
    18.2 KB · Đọc: 15
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ách
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ậy
 
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ậy
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 ơn
 
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
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.
 

File đính kèm

  • Tổng hợp đơn hàng.xlsb
    27.4 KB · Đọc: 19
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 ơn
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
 
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
Mảng miếc thế này tốc độ nhanh phải biết nhể
 
Web KT
Back
Top Bottom