Trong Excel, làm thế nào tôi có thể tổng hợp tất cả các số trên ô hiện tại?


31

Tôi muốn có một cột trong Excel bao gồm một tiêu đề, một loạt các số và sau đó có tổng các số đó ở dưới cùng. Tôi muốn tổng số để thích ứng với việc chèn các số mới trên tổng số. Một cái gì đó như thế này:

Numbers
 1
 2
 5
10

18        Total

Nếu sau này tôi chèn 10 số mới vào giữa danh sách, tôi muốn tổng số tự động bao gồm chúng.

Tôi biết SUM()hàm có thể tính tổng một cột, nhưng nếu tổng số cũng nằm trong cột đó thì nó phàn nàn về một tham chiếu tròn. Làm thế nào tôi có thể chỉ tổng các số trên tổng số?

Câu trả lời:


51

Các chức năng ROW()COLUMN()sẽ cung cấp cho hàng và cột của ô hiện tại. Sử dụng chúng trong ADDRESS()hàm để tạo một chuỗi biểu thị phạm vi từ đỉnh cột hiện tại đến hàng trên tổng số. Sau đó sử dụng INDIRECT()hàm để biến chuỗi đó thành một phạm vi thực để cung cấp cho SUM()hàm. Công thức cho tổng số ô sau đó sẽ là:

=SUM(INDIRECT(ADDRESS(1,COLUMN())&":"&ADDRESS(ROW()-1,COLUMN())))

Đặt nó trong bất kỳ ô nào trong bảng tính và nó sẽ tạo ra tổng của tất cả các số trong cột phía trên ô đó.


1
@ user370646 Trên thực tế, tôi vừa thử nghiệm nó với Excel 2010 bằng cách sử dụng một số loại công thức khác nhau trong các ô khác nhau được thêm vào và nó hoạt động chính xác. (Không xảy ra lỗi tham chiếu vòng tròn nếu các ô được thêm vào có chứa công thức tham chiếu ô với tổng.) Bạn có ví dụ cụ thể không?
Đánh dấu Meuer

1
1 lần một triệu. Điều này hoạt động trong Google Sheets nơi phạm vi của các hàm tổng -DON'T- tự động được cập nhật. Cảm ơn bạn rất nhiều.
seekerOfKnowledge

1
Tôi vừa thử nghiệm trong Google Sheets và sự kết hợp các chức năng hoạt động hoàn hảo.
CN

1
Câu trả lời này đã cứu mạng tôi!
kRazzy R

1
Có vẻ như cũng hoạt động trong LibreOffice Calc.
Dejan

6

Trên thực tế, bạn có thể làm những gì bạn muốn với đơn giản =SUM()

Giả sử bảng Excel của bạn có thiết kế như sau:

\|  A  |  B  |
-+-----+-----+
1|  1  |     |
2|  2  |     |
3|  3  |     |
4|  4  |     |
5|  5  |     |
6|     |     |
7|  15 |Total|

Giả sử A7=SUM(A1:A5), bạn có thể thêm nhiều hàng tùy ý, vì Excel sẽ mở rộng =SUMphạm vi tương ứng.

Giả sử bây giờ tôi chọn hàng 2, 3 và 4 và tôi chèn hàng. Kết quả sẽ như sau:

 \|  A  |  B  |
--+-----+-----+
 1|  1  |     |
 2|     |     |
 3|     |     |
 4|     |     |
 5|  2  |     |
 6|  3  |     |
 7|  4  |     |
 8|  5  |     |
 9|     |     |
10|  15 |Total|

A10bằng =SUM(A1:A8). Như vậy, bây giờ bạn có thể chèn số mới theo ý muốn.


1
Bây giờ bạn đánh vần nó ra, tôi biết hành vi này. Nhưng vì một số lý do, tôi đã nghĩ rằng sẽ rất hữu ích khi chỉ cần có một công thức luôn tổng hợp từ ngay phía trên ô hiện tại. Nhưng rõ ràng việc tạo ra phạm vi tổng đơn giản dễ dàng hơn so với công thức phức tạp mà tôi đã đưa ra. Tôi đã quá thông minh bằng một nửa. Cảm ơn! (Tôi sẽ phải tự an ủi rằng tôi ít nhất đã học về INDIRECT và ĐỊA CHỈ, thứ mà tôi chưa từng sử dụng trước đây.)
Mark Meuer

2
Tôi đã thay đổi câu trả lời được chấp nhận thành câu trả lời mà tôi đã đăng khi câu hỏi đó tiếp tục được nâng cấp trong một năm sau đó, công việc tôi đã hỏi trong câu hỏi và dường như hoạt động trong bảng tính Google mà câu trả lời này không có. Nhưng, @Doktoro, câu trả lời của bạn cung cấp cái nhìn sâu sắc rất hữu ích và tôi biết ơn vì điều đó.
Mark Meuer

1
Có một lỗ hổng: Chèn một hàng ở cuối (trước hàng trống). Ít nhất là trong LibreOffice, điều này sẽ để lại công thức SUM với phạm vi ban đầu của nó, tức là bỏ qua hàng mới. Giải pháp của tôi : SUM(OFFSET(A$1; 0; 0; ROW(A7)-ROW(A$1); 1)). Bởi vì nó đề cập đến chính nó và không phải là một hàng ở trên, nó sẽ luôn điều chỉnh phạm vi chính xác.
Tilman Vogel

Câu trả lời của @TilmanVogel là một câu trả lời! Cảm ơn bạn rất nhiều
Genarito

5

Câu trả lời này dành riêng cho Libra Office nhưng cũng sẽ hoạt động với Excel.

Về cơ bản, nếu chúng ta muốn đề cập rõ ràng về hàng / cột sẽ bị đóng băng, chúng ta nên đề cập đến $ với hàng / cột đó.

* Có một thuật toán sẵn có để khi bạn sao chép công thức sang các ô khác, Libra Office sẽ tự động xác định cách nó sẽ thay đổi các giá trị công thức.

Vì vậy, giả sử bạn phải thêm tất cả các hàng G1: GN => trong đó N là số hàng hiện tại. Đối với điều này, bạn muốn sửa hàng của giá trị đầu tiên và giữ các giá trị khác như. Vậy công thức sẽ là:

= SUM (G $ 1: G1) -> cho hàng đầu tiên và sau đó bạn có thể sao chép-dán công thức vào các ô khác.

Libra Office sẽ tự động giữ G1 làm giá trị đầu tiên và tự động thay đổi giá trị thứ 2 thành G2, G3, v.v. cho mọi ô.


Theo câu trả lời của Apostolos55> = Sum ($ A1: A1) <, nó sẽ không hoạt động vì chỉ cột A sẽ được sửa trong khi Row vẫn thay đổi khi công thức được sao chép sang các ô khác trong cùng một cột. Vì vậy, $ nên được thêm vào trước Hàng để có được các giá trị chính xác trong công thức. Hơn nữa, nó không giải thích những gì có thể là sự kết hợp khác, vì vậy tôi đã cung cấp thay thế. $ Phải được áp dụng trên cả Hàng và Cột nếu ô phải được giữ không đổi.
Prateek

3

ok, Indirect () không ổn định ... vì vậy khi trang tính của bạn phát triển lớn hơn, nó sẽ chỉ trở nên chậm hơn. Nếu nó hợp với bạn, bạn nên sử dụng tốt hơn:

=Sum($A1:A1)

khi bạn kéo công thức này xuống, bạn sẽ luôn có một phạm vi từ A1 đến ô hiện tại (hoặc trước đó, v.v.). Không dễ bay hơi, rất nhanh, đơn giản hơn nhiều!


Cảm ơn bạn đã trả lời. Xin hãy giúp tôi hiểu, câu trả lời của bạn khác với câu trả lời của @Doktoro Reichard như thế nào?
Mark Meuer

Đây là tổng có thể "theo dõi" cùng với các ô của bạn, giả sử trong cột tiếp theo. Sau đó, với một IF bạn chỉ có thể hiển thị / tính Sum cuối cùng. Có lẽ không phải những gì bạn đang tìm kiếm nhưng tốt để biết.
Apostolos55

Cảm ơn vì thông tin. Bạn đúng rằng nó không giải quyết được vấn đề từ câu hỏi ban đầu (cụ thể là tìm kiếm một công thức để tính tổng số trên ô) nhưng có thể hữu ích trong các tình huống khác.
Đánh dấu Meuer
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.