Cập nhật thông tin doanh thu (3 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

huynhcongnguyen

Thành viên mới
Tham gia
30/7/10
Bài viết
6
Được thích
1
Em chào các Anh/Chị trên diễn đàn ạ!
Em có một file theo dõi khách hàng, với sheet đầu tiên là tổng hợp, và các sheet tiếp theo là doanh thu theo từng tháng. Em muốn khi click chuột vào nút Update ở sheet Total thì tất cả các dữ liệu ở các sheet từng tháng sẽ được cập nhật vào sheet Total như hình bên dưới ạ.

1587435009880.png

Mong các Anh/Chị hỗ trợ và cho em lời khuyên ạ. Em chân thành cảm ơn!
 

File đính kèm

Bạn tham khảo code của
comet_1701
Mã:
Private Sub CommandButton1_Click()
Dim Ws As Worksheet, Sarr, Arr(1 To 65000, 1 To 4), i As Long, k As Long
Dim Dic As Object
Set Dic = CreateObject("Scripting.Dictionary")
For Each Ws In Worksheets
    If Ws.Name <> "Total" Then
        Sarr = Ws.Range("A4", Ws.[A65000].End(xlUp)).Resize(, 4).Value2
            For i = 1 To UBound(Sarr, 1)
                If Not Dic.exists(Sarr(i, 1)) Then
                    k = k + 1
                    Arr(k, 1) = Sarr(i, 1)
                    Arr(k, 2) = Sarr(i, 2)
                    Arr(k, 3) = Sarr(i, 3)
                    Arr(k, 4) = Sarr(i, 4)
                    Dic.Add Sarr(i, 1), k
                Else
                Arr(Dic.Item(Sarr(i, 1)), 3) = Arr(Dic.Item(Sarr(i, 1)), 3) + Sarr(i, 3)
                Arr(Dic.Item(Sarr(i, 1)), 4) = Arr(Dic.Item(Sarr(i, 1)), 4) + Sarr(i, 4)
                End If
            Next
    End If
Next
With Sheets("Total")
    .[A4:D65000].ClearContents
    .[A4].Resize(k, 4).Value = Arr
    .[A4].Resize(k, 4).Borders.LineStyle = 1
End With
Set Dic = Nothing
End Sub
 
Bạn tham khảo code của
comet_1701
Mã:
Private Sub CommandButton1_Click()
...
With Sheets("Total")
    .[A4:D65000].ClearContents
    .[A4].Resize(k, 4).Value = Arr
    .[A4].Resize(k, 4).Borders.LineStyle = 1
End With
Set Dic = Nothing
End Sub
Nếu có borders này nọ thì ClearContents không đủ. Bởi vì nếu Update này kết quả ít dòng hơn lần trước thì sẽ dư ra một đống borders.
Cách làm đúng là phải:
- copy cái borders cũ
- Rg.UssedRange.Offsset(1,).Resize(Rg.UsedRange.Rows.Count-1,).Claer
- dùng cái borders đã copied để format lại.
 
Em chào các Anh/Chị trên diễn đàn ạ!
Em có một file theo dõi khách hàng, với sheet đầu tiên là tổng hợp, và các sheet tiếp theo là doanh thu theo từng tháng. Em muốn khi click chuột vào nút Update ở sheet Total thì tất cả các dữ liệu ở các sheet từng tháng sẽ được cập nhật vào sheet Total như hình bên dưới ạ.

View attachment 236079

Mong các Anh/Chị hỗ trợ và cho em lời khuyên ạ. Em chân thành cảm ơn!
Có thể dùng consolidate sau đó kết hợp với công thức Vlookup để được kết quả
2 dùng VBA copy dữ liệu về 1 sheet sau đó kết hợp với pivot table cũng ngon
 

File đính kèm

Nếu có borders này nọ thì ClearContents không đủ. Bởi vì nếu Update này kết quả ít dòng hơn lần trước thì sẽ dư ra một đống borders.
Cách làm đúng là phải:
- copy cái borders cũ
- Rg.UssedRange.Offsset(1,).Resize(Rg.UsedRange.Rows.Count-1,).Claer
- dùng cái borders đã copied để format lại.
Em chào anh,
Anh có thể thiết kế giúp em file được không ạ, tại em mới làm quen với VBA nên còn nhiều điều chưa rõ ạ. Em cảm ơn anh!
Bài đã được tự động gộp:

Có thể dùng consolidate sau đó kết hợp với công thức Vlookup để được kết quả
2 dùng VBA copy dữ liệu về 1 sheet sau đó kết hợp với pivot table cũng ngon
Em cảm ơn anh. Em có tham khảo file của anh và thấy code khá ngắn gọn và hay nữa.
 
Web KT

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

Back
Top Bottom