Nhờ Các Anh Chị Giúp Em Tổng Hợp Từ Nhiều Bảng Trong Excel Với Ạ !!!!

Liên hệ QC

nguyentaiphat

Thành viên mới
Tham gia
6/10/21
Bài viết
3
Được thích
0
Tình hình là e muốn tổng hợp tất cả mặt hàng từ nhiều đơn hàng vào 1 bảng để kiểm soát xuất hàng.
Mẫu trong file đính kèm ạ, (em muốn chuyển từ sheet 1 ---> sheet 2).
Mong các cao nhân giúp e !!!
 

File đính kèm

  • Document.xlsx
    13 KB · Đọc: 14
Bỏ mấy cái Merge bên sheet1 đi rồi Pivot thôi.
 

File đính kèm

  • Document.xlsx
    17.4 KB · Đọc: 11
Tình hình là e muốn tổng hợp tất cả mặt hàng từ nhiều đơn hàng vào 1 bảng để kiểm soát xuất hàng.
Mẫu trong file đính kèm ạ, (em muốn chuyển từ sheet 1 ---> sheet 2).
Mong các cao nhân giúp e !!!
bạn thử file. Kết quả trả về đang để ở F14: ... để bạn để bạn dễ đối chiếu
riêng dòng tổng cộng bạn tự làm nhé. nếu đúng sai xin cho phản hồi.
Mã:
Sub TONGHOP()
Dim Arr(), KQ(), TieuDe()
Dim I&, J&, k&, t&, R&, Lr&
Dim DK, DK2, Dic As Object
With Sheet1
Lr = .Cells(Rows.Count, 2).End(xlUp).Row
Arr = .Range("A2:C" & Lr).Value
R = UBound(Arr)
ReDim TieuDe(1 To 1, 1 To Lr)
Set Dic = CreateObject("Scripting.Dictionary")
For I = 1 To Lr - 1
    If Arr(I, 2) <> "" Then DK2 = Trim(Arr(I, 2))
    If Not Dic.Exists(DK2) Then
            k = k + 1
            Dic.Add (DK2), k
            TieuDe(1, k) = DK2
   End If
Next I
ReDim KQ(1 To R, 1 To k + 1)
For I = 1 To R
    If Arr(I, 1) <> "" Then DK = Arr(I, 1)
    If Not Dic.Exists(DK) Then
            t = t + 1
            Dic.Add (DK), t
            KQ(t, 1) = DK
    End If
Next I
Dim Rng As Range
Set Rng = .Range("A1:A" & Lr)
On Error Resume Next
For J = 1 To UBound(KQ)
    dong = Rng.Find(KQ(J, 1)).Row
    If KQ(J + 1, 1) <> "" Then
    dongcuoi = Rng.Find(KQ(J + 1, 1)).Row - 1
    Else
    dongcuoi = Lr
    End If
    For Z = dong To dongcuoi
        keys = Arr(Z - 1, 2)
        If Dic.Exists(keys) Then
            KQ(J, Dic.Item(keys) + 1) = Arr(Z - 1, 3)
        End If
    Next Z
Next J
End With
Sheet2.[F15].Resize(t, k + 1) = KQ
Sheet2.[G14].Resize(1, k) = TieuDe
MsgBox "Xong"
End Sub
 

File đính kèm

  • File cua bạn nguyentaiphat..xlsm
    24 KB · Đọc: 7
bạn thử file. Kết quả trả về đang để ở F14: ... để bạn để bạn dễ đối chiếu
riêng dòng tổng cộng bạn tự làm nhé. nếu đúng sai xin cho phản hồi.
Mã:
Sub TONGHOP()
Dim Arr(), KQ(), TieuDe()
Dim I&, J&, k&, t&, R&, Lr&
Dim DK, DK2, Dic As Object
With Sheet1
Lr = .Cells(Rows.Count, 2).End(xlUp).Row
Arr = .Range("A2:C" & Lr).Value
R = UBound(Arr)
ReDim TieuDe(1 To 1, 1 To Lr)
Set Dic = CreateObject("Scripting.Dictionary")
For I = 1 To Lr - 1
    If Arr(I, 2) <> "" Then DK2 = Trim(Arr(I, 2))
    If Not Dic.Exists(DK2) Then
            k = k + 1
            Dic.Add (DK2), k
            TieuDe(1, k) = DK2
   End If
Next I
ReDim KQ(1 To R, 1 To k + 1)
For I = 1 To R
    If Arr(I, 1) <> "" Then DK = Arr(I, 1)
    If Not Dic.Exists(DK) Then
            t = t + 1
            Dic.Add (DK), t
            KQ(t, 1) = DK
    End If
Next I
Dim Rng As Range
Set Rng = .Range("A1:A" & Lr)
On Error Resume Next
For J = 1 To UBound(KQ)
    dong = Rng.Find(KQ(J, 1)).Row
    If KQ(J + 1, 1) <> "" Then
    dongcuoi = Rng.Find(KQ(J + 1, 1)).Row - 1
    Else
    dongcuoi = Lr
    End If
    For Z = dong To dongcuoi
        keys = Arr(Z - 1, 2)
        If Dic.Exists(keys) Then
            KQ(J, Dic.Item(keys) + 1) = Arr(Z - 1, 3)
        End If
    Next Z
Next J
End With
Sheet2.[F15].Resize(t, k + 1) = KQ
Sheet2.[G14].Resize(1, k) = TieuDe
MsgBox "Xong"
End Sub
cảm ơn ad nhé ! nhưng mình không biết cách sử dụng code trong excel nên cũng không biết sử dụng thế nào luôn. :((
 
cảm ơn ad nhé ! nhưng mình không biết cách sử dụng code trong excel nên cũng không biết sử dụng thế nào luôn. :((
Trong file đính kèm mình gửi bạn, Bạn có trông thấy cái nút màu xanh ở chỗ ô D7,E7 không? nhấn vào đó và xem kết quả (lưu ý trước khi nhấn hãy xóa bỏ vùng từ F14 đến R22 ).
nếu muốn di chuyển nút xanh đó đi chỗ khác thì Phải chuột và kéo khi thấy mũi tên 4 phía.
 
Web KT

Bài viết mới nhất

Back
Top Bottom