Nhờ tính tổng cho mỗi sản phẩm ở nhiều sheet ra 1 sheet (1 người xem)

Liên hệ QC

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

Dauthivan

Thành viên tiêu biểu
Tham gia
15/8/08
Bài viết
565
Được thích
327
Em có 3 sheet đầu vào, giờ em cần tính tổng số lượng ưng mỗi mã hàng vào Sheet Tong hop.
Tức là gồm 2 công đoạn:
- Lọc mã hàng duy nhất.
- Tính tổng

Em đã làm mẫu KQ mã hàng A, do số liệu bảng tính thật rất nhiều dữ liệu, nhiều Sheet, rất mong mọi người giúp cho (nếu được cả 2 cách công thức và VBA thì càng tốt)
 

File đính kèm

Em có 3 sheet đầu vào, giờ em cần tính tổng số lượng ưng mỗi mã hàng vào Sheet Tong hop.
Tức là gồm 2 công đoạn:
- Lọc mã hàng duy nhất.
- Tính tổng

Em đã làm mẫu KQ mã hàng A, do số liệu bảng tính thật rất nhiều dữ liệu, nhiều Sheet, rất mong mọi người giúp cho (nếu được cả 2 cách công thức và VBA thì càng tốt)
Công thức tính tổng thì bạn dùng công thức sau:
PHP:
=SUMPRODUCT(SUMIF(INDIRECT("'sheet"&ROW($1:$3)&"'!A1:A1000"),A2,INDIRECT("'sheet"&ROW($1:$3)&"'!B1:B1000")))
 
Upvote 0
Cảm ơn bạn, làm công thức như vậy rất OK rồi, thế còn làm theo VBA thì cách làm thế nào?
 
Upvote 0
Cảm ơn bạn, làm công thức như vậy rất OK rồi, thế còn làm theo VBA thì cách làm thế nào?
Giải quyết bài toán này không gì sướng bằng dùng công cụ Consolidate
Xem video clip

[video=youtube;7GD5P5R-PY8]http://www.youtube.com/watch?v=7GD5P5R-PY8&feature=youtu.be[/video]

Muốn code, cứ record macro quá trình thao tác trên
Đừng nói là tổng hợp các sheet trong 1 file, consolidate thậm chí còn có thể tổng hợp dữ liệu với cả file đang đóng mà chẳng cần phải mở file nữa đấy
 
Upvote 0
Thưa thày, nhờ thày giúp cho em: Trong Excel có những công cụ gì, hàm gì có thể tổng hợp được dữ liệu ngay cả khi file nguồn đóng.

Nếu bỏ công cụ dấu +, - trong chức năng Consnsolidate thì làm thế nào ah?
 
Lần chỉnh sửa cuối:
Upvote 0
Thưa thày, nhờ thày giúp cho em: Trong Excel có những công cụ gì, hàm gì có thể tổng hợp được dữ liệu ngay cả khi file nguồn đóng.

Nếu bỏ công cụ dấu +, - trong chức năng Consnsolidate thì làm thế nào ah?
Về công cụ tôi biết có 2 em là: Consolidate và PivotTable
Về công thức tôi không nhớ lắm (SUM, VLOOKUP, HLOOKUP và 1 vài hàm khác). Tuy nhiên, bạn có thể thí nghiệm trên 2 file để biết chi tiết
------------------------------
Câu màu đỏ ở trên tôi không hiểu bạn nói gì! Công cụ dấu +, - là cái gì?
 
Upvote 0
Rất mong mọi người giúp em bài toán này bằng VBA với ah, em xin cảm ơn rất nhiều.
 
Upvote 0
Rất mong mọi người giúp em bài toán này bằng VBA với ah, em xin cảm ơn rất nhiều.
Với cấu trúc đúng như trong ví dụ, bạn thử code này. RightClick vào sheet"Tong hop" ===> ViewCode ===> chép code này vào
Mã:
Private Sub Worksheet_Activate()
Dim Vung, d As Object, I As Long, Ws As Worksheet
    Set d = CreateObject("scripting.dictionary")
        For Each Ws In Worksheets
            If Ws.Name <> "Tong hop" Then
                Vung = Ws.Range(Ws.[A2], Ws.[a10000].End(xlUp)).Resize(, 2)
                    For I = 1 To UBound(Vung)
                        If Not d.exists(Vung(I, 1)) Then
                            d.Add Vung(I, 1), Vung(I, 2)
                        Else
                            d.Item(Vung(I, 1)) = d.Item(Vung(I, 1)) + Vung(I, 2)
                        End If
                    Next I
            End If
        Next Ws
    [A2:B10000].ClearContents
    [A2].Resize(d.Count) = Application.WorksheetFunction.Transpose(d.keys)
    [B2].Resize(d.Count) = Application.WorksheetFunction.Transpose(d.items)
End Sub
Cứ thay đổi, thêm bớt dữ liệu, sheet, chọn sheet "Tong hop" xem kết quả
Thân
 
Upvote 0
Rất mong mọi người giúp em bài toán này bằng VBA với ah, em xin cảm ơn rất nhiều.
Tôi gợi ý bạn record macro sao bạn không làm? Đây là công cụ mạnh để tổng hợp dữ liệu nhiều sheet đấy
Viết cho bạn đây:
PHP:
Private Sub Worksheet_Activate()
  Dim wks As Worksheet, Arr(), i As Long
  ReDim Arr(1 To Sheets.Count - 1)
  ActiveSheet.Range("A1:B10000").ClearContents
  For Each wks In ThisWorkbook.Worksheets
    If wks.Name <> ActiveSheet.Name Then
      i = i + 1
      Arr(i) = "'" & wks.Name & "'!" & "R1C1:R10000C2"
    End If
  Next
  ActiveSheet.Range("A1").Consolidate Arr, 9, 1, 1
End Sub
 
Upvote 0
Thưa thày số 9 trong đoạn

PHP:
ActiveSheet.Range("A1").Consolidate Arr, 9, 1, 1

có phải là hàm sum không ah
 
Upvote 0
Thưa thày số 9 trong đoạn

PHP:
ActiveSheet.Range("A1").Consolidate Arr, 9, 1, 1

có phải là hàm sum không ah
Chính xác ---> Giống với tham số 9 hoặc 109 của hàm SUBTOTAL ấy
Vậy suy ra, ngoài số 9 còn có số 1, 2, 3... vân vân đến số 11
---------------
Nói thêm: Code này nếu cải tiến lại 1 chút, bạn có thể tổng hợp luôn dữ liệu trong các sheet từ 1 file đang đóng mà không cần phải mở file lên
Nghiên cứu xem! (bằng cách record macro quá trình consolidate trên các sheet)
 
Lần chỉnh sửa cuối:
Upvote 0
Giải quyết bài toán này không gì sướng bằng dùng công cụ Consolidate
Xem video clip

[video=youtube;7GD5P5R-PY8]http://www.youtube.com/watch?v=7GD5P5R-PY8&amp;feature=youtu.be[/video]

Muốn code, cứ record macro quá trình thao tác trên
Đừng nói là tổng hợp các sheet trong 1 file, consolidate thậm chí còn có thể tổng hợp dữ liệu với cả file đang đóng mà chẳng cần phải mở file nữa đấy

Ồ, không ngờ chức năng consolidate này đơn giản mà lại nhanh như vậy.

Em có cảm giác hình như Pivot table có vẻ "tổng quát hơn" là consolidate thì phải? Liệu có bài toán nào mà consolidate thì giải quyết được trong khi sử dụng Pivot table lại không được không hả thày?
 
Upvote 0
Về công cụ tôi biết có 2 em là: Consolidate và PivotTable
Về công thức tôi không nhớ lắm (SUM, VLOOKUP, HLOOKUP và 1 vài hàm khác). Tuy nhiên, bạn có thể thí nghiệm trên 2 file để biết chi tiết
------------------------------
Câu màu đỏ ở trên tôi không hiểu bạn nói gì! Công cụ dấu +, - là cái gì?
Em đoán khi chọn Create links to source data thì nó sẽ có cái dấu đó.
 
Upvote 0
Công thức tính tổng thì bạn dùng công thức sau:
PHP:
=SUMPRODUCT(SUMIF(INDIRECT("'sheet"&ROW($1:$3)&"'!A1:A1000"),A2,INDIRECT("'sheet"&ROW($1:$3)&"'!B1:B1000")))

Em xin hỏi hai dấu ' trong SUMPRODUCT(SUMIF(INDIRECT("'sheet"&ROW($1:$3)&"'!A1:A1000"),A2,INDIRECT("'sheet"&ROW($1:$3)&"'!B1:B1000"))) có nghĩa là gì thế?
 
Lần chỉnh sửa cuối:
Upvote 0
Em xin hỏi hai dấu ' trong SUMPRODUCT(SUMIF(INDIRECT("'sheet"&ROW($1:$3)&"'!A1:A1000"),A2,INDIRECT("'sheet"&ROW($1:$3)&"'!B1:B1000"))) có nghĩa là gì thế?
Thực ra nếu tên sheet chỉ như mẫu (Sheet1, Sheet2,...) nói chung là không có khoảng trắng và không dấu tiếng Việt thì ta không cần cặp dấu nháy đơn này, bạn có thể bỏ đi cũng được. Nhưng bây giờ giả sử bạn thay tên sheet thành Tháng 1, Tháng 2 hay Quý 1, Quý 2,... thì bắt buộc phải có cặp dấu nháy đơn này. Bạn cứ thử đổi tên sheet thành tiếng Việt có dấu hoặc có khoảng trắng và bỏ cặp dấu nháy đơn này, công thức sẽ báo lỗi ngay.
 
Upvote 0
Tôi gợi ý bạn record macro sao bạn không làm? Đây là công cụ mạnh để tổng hợp dữ liệu nhiều sheet đấy
Viết cho bạn đây:
PHP:
Private Sub Worksheet_Activate()
  Dim wks As Worksheet, Arr(), i As Long
  ReDim Arr(1 To Sheets.Count - 1)
  ActiveSheet.Range("A1:B10000").ClearContents
  For Each wks In ThisWorkbook.Worksheets
    If wks.Name <> ActiveSheet.Name Then
      i = i + 1
      Arr(i) = "'" & wks.Name & "'!" & "R1C1:R10000C2"
    End If
  Next
  ActiveSheet.Range("A1").Consolidate Arr, 9, 1, 1
End Sub


Anh xin cho hỏi:
Nếu: khi muốn tổng hợp thêm 1 cột số liệu C, hoặc muốn tổng hợp dữ liệu 1 cột khác không phải là B thì cần sửa đổi thế nào. Làm ơn chỉ dẫn. Xin cảm ơn.
 
Lần chỉnh sửa cuối:
Upvote 0

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

Back
Top Bottom