2013-09-23 25 views
17

Cách tạo tổng Google Bảng tính() luôn kết thúc trên ô ở trên, ngay cả khi thêm ô mới? Tôi có một số tính toán như vậy để thực hiện trên mỗi cột duy nhất để solutions like this sẽ không giúp ích gì.Tổng số bảng tính Google luôn kết thúc trên ô ở trên

Ví dụ:

On cột B, tôi có một vài dãy động đó phải được cộng lại. B1..B9 nên được tóm tắt trên B10, và B11..B19 nên được tóm tắt trên B20. Tôi có hàng chục tính toán như vậy để thực hiện. Mỗi bây giờ và sau đó, tôi thêm hàng bên dưới hàng được tổng hợp cuối cùng và tôi muốn chúng được thêm vào tổng. Tôi thêm một hàng mới (gọi nó là 9.1) trước hàng 10, và một raw mới (chúng ta hãy gọi nó là 19.1) trước hàng 20. Tôi muốn B10 chứa tổng của B1 đến B9.1 và B20 để chứa tổng B11: B19.1.

Trên excel, tôi có số offset function giống như nét duyên dáng. Nhưng làm thế nào để làm điều đó với bảng tính google? Tôi đã cố gắng sử dụng các công thức như thế này:

=SUM(B1:INDIRECT(address(row()-1,column(),false))) # Formula on B10 
=SUM(B11:INDIRECT(address(row()-1,column(),false))) # Formula on B20 

Nhưng trên Bảng tính Google, tất cả chỉ là lỗi #name.

Tôi lãng phí thời gian cố gắng tìm một giải pháp, có thể ai đó có thể bình tĩnh? Xin cho biết

Amnon

+1

Thực tế là gì? Tại sao nó lại khó thế này!? –

Trả lời

39

Bạn có thể tìm cho công thức như: trả về tài liệu tham khảo

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

Google Spreadsheet TIẾP đến một ô hoặc khu vực, thời gian - từ những gì tôi nhớ lại - Excel Hàm INDIRECT trả về luôn luôn tham chiếu đến một ô. Với INDIRECT của Google thực sự có một số khó khăn khi bạn cố gắng sử dụng nó bên trong SUM làm tham chiếu ô, những gì bạn muốn là nạp SUM với toàn bộ dải ô được tóm tắt trong ví dụ: a1 ký hiệu: "B1: BX".

Bạn nhận được địa chỉ mà bạn muốn theo cách tương tự như trong EXCEL (lưu ý "4" vào đây để hàng/cột tương đối, bởi lợi nhuận TIẾP mặc định của Google tuyệt đối):

ADDRESS(ROW()-1,COLUMN(),4)

và hơn sử dụng nó để chuẩn bị chuỗi phạm vi cho hàm SUM bằng cách nối với ô bắt đầu.

"B1:"&

và quấn nó lên với KHÔNG TRỰC TIẾP, mà sẽ trở lại khu vực được tổng hợp.

đề cập đến ĐÁP DƯỚI từ Druvision (I cant bình luận nêu ra, tôi không muốn nhân câu trả lời)

Thay vì tốn thời gian công thức điều chỉnh mỗi hàng thời gian sẽ được chèn/xóa để làm cho tất cả giống như sau:

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

Bạn có thể tha cho một cột trong bảng riêng biệt để đựng các biến (hãy đặt tên cho nó là "def"), chúng ta hãy nói Z, để xác định điểm bắt đầu ví dụ trong Z1 ghi "B1" trong Z2 ghi "B11" v.v. và hơn sử dụng nó như biến trong tổng của bạn bằng cách sử dụng INDEX:

SUM(INDIRECT(INDEX(def!Z:Z,1,1)&":"&ADDRESS(ROW()-1,COLUMN(),4))) - khoản tiền từ B1 đến hàng tính toán, vì trong Z1 chúng ta có "B1" (các 1,1 trong INDEX(...,1,1))

SUM(INDIRECT(INDEX(def!Z:Z,2,1)&":"&ADDRESS(ROW()-1,COLUMN(),4))) - khoản tiền từ B11 để hàng tính toán, vì trong Z2 chúng ta có "B11" (các 2,1 trong INDEX(...,2,1))

xin lưu ý:

  1. Tách riêng trang tính có tên 'def' - bạn không muốn hàng chèn/xóa ảnh hưởng đến dữ liệu đó, do đó giữ nó ở bên cạnh. Hữu ích khi thêm một số danh sách xác thực, những thứ khác bạn cần trong công thức của mình.

  2. ký hiệu "Z: Z" - toàn bộ cột. Bạn nói rằng bạn đã có rất nhiều công thức đó;)

Vì vậy bạn duy trì sự linh hoạt của việc xác định tế bào bắt đầu cho mỗi công thức của bạn, mà không bị ảnh hưởng bởi những thay đổi tấm tính.

Nhân tiện, sẽ không dễ dàng hơn khi viết chức năng/tập lệnh tùy chỉnh tổng hợp tất cả các hàng phía trên ô? Nếu bạn cảm thấy thích javascript, từ những gì tôi nhớ, bảng tính google giờ đây đã có trình chỉnh sửa tập lệnh tuyệt vời. Bạn có thể thực hiện một hàm có tên là e.g. sumRowsAboveMe() và chỉ sử dụng nó trong trang tính của bạn như =sumRowsAboveMe() trong ô ô.

+3

Nếu bạn đang mã hóa cứng cột để bắt đầu phạm vi, cũng có thể mã hóa nó cho phần cuối của phạm vi. Sau đó nó có thể được đơn giản hóa thành '= SUM (INDIRECT (" B1: B "& ROW() - 1))' – aross

+0

Hoặc bạn có thể sử dụng offset = sum (offset (B1,0,0, row() - 1)) –

+0

Có lẽ chức năng bù đắp đã được thêm sau khi câu hỏi xuất hiện. Nhưng hàm chỉ mục cũng xuất hiện để làm việc = tổng (B1: chỉ mục (B: B, hàng() - 1)) –

-1

Câu trả lời của @PsychoFish đã dẫn tôi đến một cách chính xác. Vấn đề duy nhất mà tôi phải viết lại công thức một lần nữa từ mỗi cột và mỗi tổng. Vì vậy, đây là công thức được cải thiện, trong đó tóm tắt 9 tế bào trước đó trên cùng một cột, không thể xác định rõ cột hoặc hàng số:

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

Vấn đề duy nhất là tôi đã phải viết lại các công thức nếu ai đó thêm hoặc xóa một hàng. Trong trường hợp này tôi nên thay đổi từ 9 đến 10 hoặc 8 một cách vô lý.

0

cú pháp chung:

=SUM(INDIRECT(cell_reference_as_string1 &":"& cell_reference_as_string2) 

với ví dụ:

cell_reference_as_string1 = ADDRESS(ROW(),COLUMN(),4) 
cell_reference_as_string2 = ADDRESS(ROW()-1,COLUMN(),4) 
3

LƯU Ý Sau khi kiểm tra câu trả lời này, nó sẽ chỉ làm việc nếu tổng là trong một cột khác nhau do một lỗi phụ thuộc vòng tròn. Nếu không, giải pháp là hợp lệ.

Đó là một chút đại số, nhưng chúng tôi có thể tận dụng lợi thế của việc kéo góc dưới bên phải của Bảng tính.

=SUM(X:X) - SUM(X2:X) 

đâu X là cột bạn đang làm việc với và X2 là của bạn kết thúc điểm. Kéo công thức xuống và Sheets sẽ tăng X2, do đó thay đổi điểm kết thúc.

* Bạn đã đề cập rằng bạn đã có hàng chục phép tính như vậy để thực hiện. Vì vậy, để phù hợp với nhu cầu chính xác của bạn, chúng tôi sẽ trừ tổng kết cuối cùng của bạn để có được phạm vi "trung bình" mà chúng tôi muốn.

ví dụ:

B1..B9 nên được tóm tắt trên B10, và B11..B19 nên được tóm tắt trên B20

Do lỗi phụ thuộc vòng tròn đề cập trước đó, tôi không thể giải quyết nó một cách chính xác và đưa tổng trên cùng một dòng, nhưng điều này có thể làm việc trong các trường hợp khác, nơi tổng cần phải được lưu trữ trong một cột khác nhau.

=SUM(B:B) - SUM(B9:B) //Formula on C10 (Sum of B1..B9) 
=SUM(B:B) - SUM(B19:B) - B10 // Formula on C20 (Sum of B11..B19) 
1

này được dựa trên @PsychoFish, đây là giải pháp:

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

Đơn giản chỉ cần thay thế "3:" cho hàng để bắt đầu tổng hợp.

@PsychoFish là chính xác nhưng không thể được kéo và sao chép vì cột được viết mã đen và chữ cứng, và @Druvision đã đi đúng hướng nhưng sai ... về cơ bản đã kết thúc với cùng một vấn đề phải nhập lại các phạm vi và sau đó trượt các công thức hơn và hơn.

0

Các bạn đang làm việc này khó hơn bạn phải làm. Tôi chỉ để lại một vài hàng trống ở trên bằng hàng "tổng hợp" (bạn có thể định dạng chúng thành màu hoặc thứ gì đó để giữ cho chúng không được sử dụng vô tình), sau đó chỉ cần thêm các hàng mới ngay phía trên các hàng đặc biệt đó.

Các vấn đề liên quan