Cách Cộng Tổng Giữa Các Sheet Trong Excel

Mục lục bài viết

Giới thiệu chung

Trong nhiều ứng dụng thực tế, chúng ta thường gặp trường hợp cần tổng hợp dữ liệu từ nhiều sheet khác nhau trong cùng một workbook. Ví dụ: một doanh nghiệp muốn spor tổng doanh thu, chi phí, lợi nhuận của các phòng ban, từng kỳ hoặc từng sản phẩm. Để tránh việc tính toán thủ công, Excel cung cấp nhiều công cụ mạnh mẽ giúp cộng tổng dữ liệu giữa các sheet một cách nhanh chóng và chính xác. Bài viết này sẽ hướng dẫn chi tiết cách thực hiện, từ cách sử dụng cú pháp 3D reference đến các hàm nâng cao như SUMIF, INDIRECT, SUMPRODUCT, và thậm chí là cách viết macroا VBA để tự động hoá quá trình. Bạn cũng sẽ được tìm hiểu các mẹo và thủ thuật để tránh lỗi, kiểm tra tính đúng đắn và nâng cao hiệu suất tính toán trong Excel.

1. Cấu trúc workbook và cách đặt tên sheet

Trước khi bắt đầu viết công thức, hãy xác định một cấu trúc rõ ràng cho workbook của bạn:

  • Tên sheet chuẩn: Đặt tên sheet theo dạng Kỳ1, Kỳ2, Kỳ3 hoặc BánHàng, ChiPhí, LợiNhuận. Tránh đặt tên có dấu cách hoặc ký tự đặc biệt, vì khi dùng hàm INDIRECT hoặc SUMIF có thể gây lỗi.
  • Cột dữ liệu thống nhất: Mỗi sheet cần có cùng một cấu trúc cột để dễ dàng cộng tổng. Ví dụ cột A: Mã Sản Phẩm, cột B: Số Lượng, cột C: Đơn Giá, cột D: Tổng Tiền.
  • Ghi chú: Dùng một sheet riêng để lưu trữ danh sách các sheet, giúp dễ dàng tham khảo khi viết công thức dài.

Với cấu trúc chuẩn, việc viết công thức sẽ trở nên mạch lạc và dễ bảo trì.

2. Cộng tổng qua 3D reference (địa chỉ 3 chiều)

Cách đơn giản nhất để cộng tổng giá trị từ nhiều sheet là sử dụng địa chỉ 3D. Cú pháp:

=SUM(FirstSheet:LastSheet!Range)
  • FirstSheet là sheet đầu tiên efficaces trong dải sheet cần tính.
  • LastSheet là sheet cuối cùng trong dải sheet cần tính.
  • Range là vùng dữ liệu cụ thể.

Ví dụ thực tế

Giả sử bạn có 3 sheet: BánHàng1, BánHàng2, BánHàng3. Mỗi sheet đều có cột Tổng Tiền ở ô D5. Bạn muốn tính tổng doanh thu của cả ba sheet:

=SUM(BánHàng1:BánHàng3!D5)

Kết quả sẽ là tổng của D5 trên ba sheet.

Khi nào sử dụng 3D reference

  • Khi dữ liệu có cấu trúc đồng nhất: Cột và hàng cần tổng luôn ở cùng một vị trí.
  • Khi số sheet cố định: Bạn biết trước chính xác bao nhiêu sheet sẽ được cộng.

Lưu ý khi dùng 3D reference

  • Nếu có sheet không muốn tính, hãy đặt sheet đó ở đầu hoặc cuối dải, hoặc tạm thời đổi tên thành Temp.
  • Nếu có sheet chứa tiêu đề, dữ liệu sẽ được cộng vào, gây sai lệch. Kiểm tra kỹ.

3. Cộng tổng với SUMIF và SUMIFS

Trong thực tế, bạn có thể cần cộng giá trị dựa trên điều kiện. Hàm SUMIF (đơn điều kiện) và SUMIFS (đa điều kiện) rất hữu ích.

Cú pháp

  • SUMIF(range, criteria, sum_range)
  • SUMIFS(sum_range, criteria_range1, criteria1, criteria_range2, criteria2, …)

Cộng tổng theo điều kiện trên nhiều sheet

Để áp dụng SUMIF hoặc SUMIFS trên nhiều sheet, cần viết công thức cho từng sheet rồi cộng kết quả. Ví dụ:

=SUMIF(BánHàng1!$A$2:$A$100, "Sản Phẩm A", BánHàng1!$D$2:$D$100) + SUMIF(BánHàng2!$A$2:$A$100, "Sản Phẩm A", BánHàng2!$D$2:$D$100) + SUMIF(BánHàng3!$A$2:$A$100, "Sản Phẩm A", BánHàng3!$D$2:$D$100)

Nếu số sheet lớn, cách này trở nên bất tiện. Một giải pháp là dùng INDIRECT kết hợp với mảng.

Sử dụng INDIRECT để tham chiếu động

Giả sử bạn có danh sách tên sheet trong cột A của sheet Summary, từ A2:A4. Bạn muốn tính tổng Tổng Tiền (ô D5) cho mỗi sheet:

=SUMPRODUCT(SUMPRODUCT(INDIRECT("'" & Summary!$A$2:$A$4 & "'!D5")))
  • INDIRECT("'" & Summary!$A$2:$A$4 & "'!D5") tạo mảng địa chỉ 3D động.
  • SUMPRODUCT tính tổng của mảng.

Lưu ý: Hàm INDIRECT là hàm volatile, có thể làm chậm workbook nếu dùng quá nhiều.

Cộng tổng nhiều điều kiện

Sử dụng SUMIFS để đếm số lượng bán hàng theo nhiều tiêu chí, ví dụ:

=SUMPRODUCT(SUMIFS(INDIRECT("'" & Summary!$A$2:$A$4 & "'!$D$2:$D$100"), INDIRECT("'" & Summary!$A$2:$A$4 & "'!$A$2:$A$100"), "Sản Phẩm A", INDIRECT("'" & Summary!$A$2:$A$4 & "'!$B$2:$B$100"), ">500"))

Đây là một công thức phức tạp nhưng mạnh mẽ.

4. Sử dụng hàm SUMPRODUCT để tổng hợp dữ liệu

SUMPRODUCT thường được dùng cho tính toán ma trận, nhưng cũng rất tiện khi cộng dữ liệu từ nhiều sheet.

Cộng tổng giá trị trong một cộtVisitor

Giả sử bạn muốn tính tổng các giá trị trong cột C của nhiều sheet:

=SUMPRODUCT(SUMPRODUCT(INDIRECT("'" & Summary!$A$2:$A$4 & "'!C:C")))

Kết quả sẽ là tổng các số trong cột C của 3 sheet.

Khi dùng SUMPRODUCT thay vì SUM

Lợi thế: SUMPRODUCT hỗ trợ tính toán trên mảng, tránh phải viết công thức dài. Tuy nhiên, khi data lớn, SUMPRODUCT cũng có thể làm chậm.

5. Cộng tổng bằng cách tạo một sheet “Tổng hợp”

Một cách phổ biến và dễ bảo trì là tạo một sheet riêng biệt, thường gọi là Summary hoặc Dashboard. Từ sheet này, bạn sẽ đặt công thức tham chiếu đến từng sheet.

Bước 1: Tạo danh sách tên sheet

Trong cột A, nhập danh sách tên sheet:

A
BánHàng1
BánHàng2
BánHàng3

Bước 2: Thêm công thức tham chiếu

Ở cột B, nhập công thức tính tổng Tổng Tiền từ mỗi sheet:

=INDIRECT("'" & A2 & "'!D5")

Kéo công thức xuống cho tất cả các dòng.

Bước 3: Tổng hợp toàn bộ

Ở ô B5, tính tổng:

=SUM(B2:B4)

Cách này rất trực quan, dễ chỉnh sửa khi thêm sheet mới: chỉ cần thêm tên sheet vào danh sách, các công thức sẽ tự động cập nhật.

6. Tạo danh sách động dùng INDEX và spi

Nếu bạn muốn tránh dùng INDIRECT (volatile) và muốn danh sách sheet tự động cập nhật khi thêm hoặc xóa sheet, bạn có thể dùng một hàm macro hoặc công thức phức tạp.

Cách Cộng Tổng Giữa Các Sheet Trong Excel
Cách Cộng Tổng Giữa Các Sheet Trong Excel

Sử dụng hàm INDEX với ROW

=INDEX(SheetList!$A$1:$A$100, ROW(A1))

Trong đó SheetList!$A$1:$A$100 là danh sách tên sheet (được tạo bằng macro). Công thức này trả về tên sheet tương ứng với dòng hiện tại.

Sử dụng OFFSET để tạo mảng động

=OFFSET(Summary!$A$1, 0, 0, COUNTA(Summary!$A:$A), 1)

Trả về mảng chứa tên sheet.

Sau đó, bạn có thể kết hợp với INDIRECT:

=SUMPRODUCT(SUMPRODUCT(INDIRECT("'" & OFFSET(Summary!$A$1, 0, 0, COUNTA(Summary!$A:$A), 1) & "'!D5")))

Cách này tự động tính tổng với mảng tên sheet.

7. Tính toán tổng theo thời gian (ví dụ: theo tháng)

Nếu data của bạn được lưu trong các sheet theo tháng, bạn có thể tổng hợp theo năm. Ví dụ: Jan, Feb, Mar, … Dec.

Cộng tổng theo năm

=SUM(Jan:Dec!D5)

Như đã trình bày ở phần 3, 3D reference rất tiện.

Tính tổng theo quý

Giả sử bạn muốn tổng doanh thu của quý 1:

=SUM(Jan:Mar!D5)

Tính tổng theo mô hình mẫu

Nếu tên sheet không liên tục, bạn có thể dùng SUMPRODUCT:

=SUMPRODUCT(SUMPRODUCT(INDIRECT("'" & {"Jan","Feb","Mar"} & "'!D5")))

8. Sử dụng Power Query để tổng hợp dữ liệu

Nếu workbook có nhiều sheet và dữ liệu lớn, Power Query (Get & Transform) là công cụ mạnh mẽ để tự động hóa quá trình tổng hợp.

Các bước cơ bản

  1. Chọn Data > Get Data > From Other Sources > Blank Query.
  2. Sử dụng M code: Đặt tên sheet trong một danh sách, sau đó Table.Combine để kết hợp dữ liệu.
  3. Chuyển đổi/Thêm cột: Ví dụ, tính Tổng Tiền bằng cách nhân Số Lượng Đơn Giá.
  4. Load vào Excel: Chọn Close & Load To..., tạo một sheet mới.

Lợi ích

  • Không cần viết công thức phức tạp.
  • Tự động cập nhật khi dữ liệu trong các sheet thay đổi.
  • Thân thiện với dữ liệu lớn, tính toán nhanh hơn.

9. Tự động hoá với VBA (Macro)

Đối với người dùng muốn tự động hoá quá trình cộng tổng, viết macro đơn giản là cách tốt nhất.

Mẫu macro

Sub SumAcrossSheets() Dim ws As Worksheet Dim sumTotal As Double Dim targetCell As String Dim sheetNames As Variant Dim i As Long targetCell = "D5" ' Ô cần tổng sheetNames = Array("BánHàng1", "BánHàng2", "BánHàng3") ' Danh sách sheet sumTotal = 0 For i = LBound(sheetNames) To UBound(sheetNames) Set ws = ThisWorkbook.Worksheets(sheetNames(i)) sumTotal = sumTotal + ws.Range(targetCell).Value Next i ' Ghi kết quả vào sheet Summary ThisWorkbook.Worksheets("Summary").Range("B5").Value = sumTotal
End Sub
  • Đoạn script này đọc giá trị ô D5 từ từng sheet trong mảng sheetNames, cộng dồn và ghi vào sheet Summary.
  • Bạn có thể mở rộng để tính theo nhiều ô hoặc tạo danh sách sheet tự động.

Macro nâng cao: lấy’Espanh

Sub SumAllSheets() Dim ws As Worksheet Dim sumTotal As Double Dim targetCell As String targetCell = "D5" sumTotal = 0 For Each ws In ThisWorkbook.Worksheets ' Bỏ sheet Summary If ws.Name <> "Summary" Then sumTotal = sumTotal + ws.Range(targetCell).Value End If Next ws ThisWorkbook.Worksheets("Summary").Range("B5").Value = sumTotal
End Sub

Macro này tự động tính tổng cho mọi sheet ngoại trừ Summary.

10. Kiểm tra tính đúng đắn và tránh lỗi

Khi cộng tổng nhiều sheet, có một số lỗi phổ biến cần tránh:

LỗiNguyên nhânGiải pháp
#VALUE!Ô tham chiếu không hợp lệ (INDIRECT sai tên)Kiểm tra tên sheet, tránh khoảng trắng, ký tự đặc biệt
#REF!Sheet bị xóa hoặc chuyển tênKiểm tra danh sách sheet, đồng bộ công thức
Tổng sai lệchCó sheet chứa tiêu đề hoặc dữ liệu pomagDùng hàm SUMIF để lọc, hoặc xác định vùng dữ liệu cụ thể
Workbook chậmSử dụng INDIRECT nhiều lầnThay vì INDIRECT, dùng SUMPRODUCT hoặc Power Query
Không cập nhật comumCấu hình tính toán thủ côngTránh đặt tính toán thủ công, dùng Automatic

Kiểm tra bằng công thức IFERROR

=IFERROR(SUM(BánHàng1:BánHàng3!D5), "Lỗi")

Nếu có lỗi, sẽ hiển thị Lỗi thay vì #REF!.

11. Tối ưu hiệu suất tính toán

Nếu workbook của bạn có hàng nghìn hàng và nhiều sheet, hãy chú ý:

  • Tắt tính toán thủ công: Formulas > Calculation > Automatic.
  • Sử dụng SUMPRODUCT thay vì INDIRECT: SUMPRODUCT nhanh hơn khi làm việc với mảng.
  • Giới hạn vùng dữ liệu: Thay vì C:C, chỉ dùng C2:C1000 để giảm số lượng ô cần tính.
  • Sử dụng Power Query: Nó tối ưu hóa khi làm việc với dữ liệu lớn, tránh tính toán từng ô trong Excel.

12. Thực hành: Ví dụ cụ thể

Tình huống

Bạn đang quản lý một cửa hàng bán lẻ với 3 cửa hàng (A, B, C). Mỗi cửa hàng lưu dữ liệu bán hàng trong sheet riêng: ShopA, ShopB, ShopC. Bạn muốn tổng hợp doanh thu (Tổng Tiền ở ô D5) và số lượng bán (Số Lượng ở ô B5) trong một sheet Summary.

Bước 1: Tạo danh sách sheet

A
ShopA
ShopB
ShopC

Bước 2: Tham chiếu tổng doanh thu

=INDIRECT("'" & A2 & "'!D5")

Kéo xuống.

Bước 3: Tham chiếu tổng số lượng

=INDIRECT("'" & A2 & "'!B5")

Kéo xuống.

Bước 4: Tổng hợp

=SUM(B2:B4) ' Tổng doanh thu
=SUM(C2:C4) ' Tổng số lượng

Bước 5: Kiểm tra lỗi

=IFERROR(INDIRECT("'" & A2 & "'!D5"), 0)

Nếu sheet bị thiếu, sẽ trả về 0 thay vì lỗi.

Kết quả

  • Tổng doanh thu: =SUM(B2:B4)
  • Tổng số lượng: =SUM(C2:C4)

Đơn giản, chính xác, dễ bảo trì.

13. Kết luận và lời khuyên cuối cùng

  • Chọn công cụ phù hợp: 3D reference cho dữ liệu đồng nhất, SUMIF/SUMIFS Null for điều kiện, SUMPRODUCT cho mảng, Power Query cho dữ liệu lớn, VBA cho tự động hoá.
  • Bảo trì công thức: Luôn giữ】【: danh sách sheet, tránh thay đổi tên sheet, dùng INDIRECT cẩn thận.
  • Tối ưu hiệu suất: Giới hạn vùng dữ liệu, tránh volatile formulas, dùng Power Query khi cần.
  • Kiểm tra dữ liệu: Sử dụng IFERROR, ISNUMBER, ISREF để tránh lỗi.
  • Tự động hoá: Macro là công cụ mạnh mẽ nhưng cần kiểm tra kỹ lưỡng trước khi chạy trên dữ liệu quan trọng.

Bằng cách áp dụng những kiến thức và phương pháp trên, bạn sẽ nhanh chóng và chính xác tổng hợp dữ liệu giữa nhiều sheet trong Excel, tiết kiệm thời gian và giảm thiểu sai sót. Hãy thử áp dụng vào workbook của bạn và cảm nhận sự khác biệt trong công việc!

⚠️
LƯU Ý QUAN TRỌNG: Miễn trừ trách nhiệm: Mặc dù chúng tôi luôn nỗ lực để đảm bảo tính chính xác và cập nhật của thông tin, nhưng các quy định về giáo dục và tuyển sinh có thể thay đổi theo thời gian. BigSchool không chịu trách nhiệm về bất kỳ sai sót nào hoặc kết quả phát sinh từ việc sử dụng thông tin trên trang này. Độc giả nên liên hệ trực tiếp với nhà trường hoặc cơ quan chức năng để có thông tin mới nhất. Ngoài ra, BigSchool tuyệt đối không bán sản phẩm, khóa học hay cung cấp dịch vụ được nhắc đến trong bài.

Viết một bình luận