Tổng cộng không có Script


35

Đối với câu hỏi này , tôi đã tạo một hàm Google Apps Script, tính toán tổng tích lũy của một phạm vi. Martin Hawksey trên Google+ đã đưa ra nhận xét về cách tính tổng tích lũy hiệu quả hơn:

function cumulativeSum(array){
  var output = [];
  for (i in array){
    if(i==0) {
      if (array[i].length > 1) throw ("Only single column of data");
      output.push([array[i][0]]);
    } else {
      output.push([output[i-1][0] + array[i][0]]);
    }
  }
  return output;
}

Câu hỏi của tôi là: điều này có thể đạt được với việc sử dụng công thức không?


Xin lỗi vì một câu trả lời rất muộn, tôi chỉ thấy anh ta luồn chỉ trong "Liên quan" bên phải.
AdamL

Câu trả lời:


30

Vâng:

=ArrayFormula(SUMIF(ROW(A1:A10);"<="&ROW(A1:A10);A1:A10))

Ví dụ về Tổng tích lũy

Các số trong vòng tròn màu xanh lá cây là những con số được tổng hợp, ArrayFormula đang điền vào tất cả các số khác dựa trên ô được dán vào, trong ví dụ này tôi đã dán vào A11, B1 và ​​C1 để hiển thị hiệu ứng của nó.

Bảng tính này mà tôi đã thực hiện trước đây cố gắng giải thích cách MMULT có thể được sử dụng cho các loại vấn đề này và nó cũng thể hiện giải pháp SUMIF trên một trong các trang tính, có thể (và có lẽ nên) được sử dụng cho các trường hợp đặc biệt như trường hợp đặc biệt trong câu hỏi này


Tôi đã sử dụng công thức này một lần (tôi nghĩ nó là của bạn) trên Diễn đàn Google: SUMIF (ROW (A: A); "<" & ROW (A: A)), không hiệu quả. Cái này nào.
Jacob Jan Tuinstra

Hình ảnh trong câu trả lời đã được chỉnh sửa bởi một thành viên khác: + Xavier Casto
AdamL

1
@Fogest, tôi đã sử dụng một sản phẩm có tên "Snagit" để tìm hiểu thêm về tại techsmith.com/doad/snagit
Xavier Casto

@XavierCasto Ồ, tôi đã sử dụng cái này từ rất lâu rồi, không nhớ nó có cái này hay không, mặc dù đã lâu rồi. Cảm ơn đã trả lời, mặc dù tôi thích các sản phẩm của techsmith.
Máy tính tập trung vào

31

Giả sử bạn muốn:

  Row | A | B | B's formula
  --------------------------------
   1  | 1 | 1 | =1     (or =A1)
   2  | 2 | 3 | =1+2   (or =A2+B1)
   3  | 3 | 6 | =1+2+3 (or =A3+B2)

v.v ...

Sau đó, bạn có thể sử dụng: =sum($A$1:A1)nơi A1bắt đầu của các số để tổng hợp. Đặt công thức đó vào B1(hoặc bất cứ nơi nào bạn muốn) và điền nó xuống, và nó sẽ tổng hợp tất cả các ô lên đến và bao gồm cả hàng bạn đang bật. Thay phiên, bạn có thể sử dụng =Ax+Bx-1(x = hàng hiện tại, dữ liệu ở A, tổng tích lũy ở B) từ phần "Công thức của B" ở trên.


7
Điều này có vẻ hiệu quả và đơn giản hơn nhiều so với câu trả lời được chấp nhận
K Raphael

1
đồng ý, điều này là đơn giản hơn và nó hoạt động liền mạch!
loretoparisi

1

Mặc dù câu trả lời được chấp nhận tại chỗ, nó có một nhược điểm lớn do thực tế là tham số cuối cùng của SUMIFnhu cầu luôn luôn là "phạm vi hợp lệ", do đó, khi nói đến một số tính toán tổng thể chạy nâng cao hơn MMULTlà lựa chọn tốt hơn:

=ARRAYFORMULA(IF(LEN(A1:A), 
 MMULT(TRANSPOSE((ROW(A1:A)<=TRANSPOSE(ROW(A1:A)))*A1:A), SIGN(A1:A)^2), ))

0

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.