Xin giúp em code tổng họp dữ liệu từ 3 sheet vào sheet tổng

Liên hệ QC

lienle_107

Thành viên mới
Tham gia
26/5/22
Bài viết
12
Được thích
0
Em xin chào Anh, Chị trong diễn đàn.
Em có file theo dõi nhập, xuất tồn thành phẩm có cấu trúc tưng tự nhau, với 3 sheet là TCUOIKY, NHAP và sheet XUAT.
Em muốn tổng họp dữ liệu 3 sheet này vào sheet tổng là sheet BCTON.
Nhờ anh, chị trong diễn đàn giúp em viết code. Em cảm ơn.
 

File đính kèm

  • BC TON KHO THANG 062022.xlsx
    36 KB · Đọc: 19
Lần chỉnh sửa cuối:
Nhìn giống giống bài này thử tham khảo xem áp dụng được không nè
 
Upvote 0
Nhìn giống giống bài này thử tham khảo xem áp dụng được không nè
Dạ anh, của em khác tí, là tổng hợp tất cả dữ liệu của 3 sheet TCUOIKY, NHAP, XUAT sang sheet tổng BCTON với 1 điều kiện là cột D MÃ HÀNG ở cả 3 sheet kia, nếu mã hàng trùng nhau sẽ tự động cộng dồn, rồi cộng trừ nhật xuất để ra tồn cuối.
 
Upvote 0
Dữ liệu của chủ bài đăng có những vấn đề sau:
(1) Cột ngày-tháng-năm chưa có định dạng thông nhất giữa các trang tính; Chứng tỏ thêm rằng . . . . .
(2) Cột mã hàng của bạn sẽ có vấn đề khi vận hành về lâu dài
(2.1) Bạn nên có trang 'DMuc' (giống như trang 'TonCuoiKy' của bạn, nhưng không thể xài mã hàng kiểu như vậy được.
Bạn chưa có tên hàng, thật là điều ngạc nhiên vô chừng!
. . . .
 
Upvote 0
Dữ liệu của chủ bài đăng có những vấn đề sau:
(1) Cột ngày-tháng-năm chưa có định dạng thông nhất giữa các trang tính; Chứng tỏ thêm rằng . . . . .
(2) Cột mã hàng của bạn sẽ có vấn đề khi vận hành về lâu dài
(2.1) Bạn nên có trang 'DMuc' (giống như trang 'TonCuoiKy' của bạn, nhưng không thể xài mã hàng kiểu như vậy được.
Bạn chưa có tên hàng, thật là điều ngạc nhiên vô chừng!
. . .
Vâng anh nói em hiểu chút vấn đề. Chổ Mã Hàng bên công ty em không có thống nhất Mã Hàng cụ thể, nên đó là cái khó. Do quy trình sản xuất gia công cho khách hàng, nên Mã Hàng công ty sẽ lấy theo kiểu (tên khách hàng gia công + quy cách sản xuất của sản phẩm), ví dụ: Thăng Long HK/10.05.22 170-220 CT 9.0 I ( cái Mã Hàng này sẽ được in trên bao bì thùng carton, nghĩa là công ty Thăng long, lô hàng xuất khẩu HONGKONG ngày 10/05/2022, cá nhỏ cở 120-170 gram, thùng 9 kg, I là hút chân không)
Cái này thì em chịu, không thay đổi được
Anh giúp em viết cái code tổng hợp cho nhanh hơn, chứ cái file này e phải thao tác copy dơn thuần rất mất thời gian
 
Upvote 0
Em xin chào Anh, Chị trong diễn đàn.
Em có file theo dõi nhập, xuất tồn thành phẩm có cấu trúc tưng tự nhau, với 3 sheet là TCUOIKY, NHAP và sheet XUAT.
Em muốn tổng họp dữ liệu 3 sheet này vào sheet tổng là sheet BCTON.
Nhờ anh, chị trong diễn đàn giúp em viết code. Em cảm ơn.
Tặng bạn đoạn code. Ráng mà học để tự viết cho khỏe. Dạng code vầy học 1 tuần là biết viết rồi. Tự thở sướng hơn thở bằng oxy nhé
Mã:
Sub TonCuoiKy()
Dim Dic As Object, sArr(), dArr(1 To 10000, 1 To 16), shs()
Dim n As Long, tmp As String, i As Long, k As Long, j As Long, x As Long
Set Dic = CreateObject("scripting.dictionary")
shs = Array("TCuoi Ky", "Nhap", "Xuat")
For n = LBound(shs) To UBound(shs)
   With Sheets(shs(n))
      sArr = .Range("A10", .Range("A65536").End(3)).Resize(, 16).Value
   End With
   For i = 1 To UBound(sArr)
      tmp = Replace(LCase(sArr(i, 4)), " ", "")
      If Not Dic.exists(tmp) Then
         k = k + 1
         Dic.Add tmp, k
            dArr(k, 1) = k
         For j = 2 To UBound(sArr, 2)
            dArr(k, j) = sArr(i, j)
         Next
      Else
         x = Dic.Item(tmp)
         If n = UBound(shs) Then
            For j = 13 To 16
               dArr(x, j) = dArr(x, j) - sArr(i, j)
            Next
         Else
            For j = 13 To 16
               dArr(x, j) = dArr(x, j) + sArr(i, j)
            Next
         End If
      End If
   Next
Next
Sheets("BCTON").Range("A10").Resize(k, UBound(dArr, 2)) = dArr
End Sub
 
Upvote 0
Tặng bạn đoạn code. Ráng mà học để tự viết cho khỏe. Dạng code vầy học 1 tuần là biết viết rồi. Tự thở sướng hơn thở bằng oxy nhé
Mã:
Sub TonCuoiKy()
Dim Dic As Object, sArr(), dArr(1 To 10000, 1 To 16), shs()
Dim n As Long, tmp As String, i As Long, k As Long, j As Long, x As Long
Set Dic = CreateObject("scripting.dictionary")
shs = Array("TCuoi Ky", "Nhap", "Xuat")
For n = LBound(shs) To UBound(shs)
   With Sheets(shs(n))
      sArr = .Range("A10", .Range("A65536").End(3)).Resize(, 16).Value
   End With
   For i = 1 To UBound(sArr)
      tmp = Replace(LCase(sArr(i, 4)), " ", "")
      If Not Dic.exists(tmp) Then
         k = k + 1
         Dic.Add tmp, k
            dArr(k, 1) = k
         For j = 2 To UBound(sArr, 2)
            dArr(k, j) = sArr(i, j)
         Next
      Else
         x = Dic.Item(tmp)
         If n = UBound(shs) Then
            For j = 13 To 16
               dArr(x, j) = dArr(x, j) - sArr(i, j)
            Next
         Else
            For j = 13 To 16
               dArr(x, j) = dArr(x, j) + sArr(i, j)
            Next
         End If
      End If
   Next
Next
Sheets("BCTON").Range("A10").Resize(k, UBound(dArr, 2)) = dArr
End Sub
Em cảm ơn Anh rất nhiều.
Em cũng muốn học, nhưng khổ nổi em dốt quá nên thấy VBA là nhứt cái đầu. Mấy lần đóng tiền đăng ký lớp học, nhưng xong vẫn bỏ học
 
Upvote 0
.... Ráng mà học để tự viết cho khỏe. Dạng code vầy học 1 tuần là biết viết rồi. Tự thở sướng hơn thở bằng oxy nhé
Xúi dại.
Ai cũng tự học hết thì dân đói bài trên GPE bơ mỏ.
Mà lèo tèo chỉ có vài câu hỏi thì diễn đàn sẽ như Chùa Bà Đanh. Chủ diễn mất vốn.
 
Upvote 0
Upvote 0
Còn có cái sướng hơn tự thở, đó là có GPE.COM luôn sẵn lòng trợ thở cho bất cứ thành viên kia mà
Học tự thở thì phải nghe theo lời người chỉ dẫn (chuyên viên Dô-ga chẳng hạn).
Nhờ GPE mang tiếng là nhở vả chứ thực tế là sai bảo. Vấn đề bắt sửa đi sửa lại cho vừa ý thôi. Lắm khi diễn tả sai còn nổi nóng mắng bên kia hiểu lầm.
 
Upvote 0
Web KT

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

Back
Top Bottom