Jumlah kumulatif tanpa Skrip

35

Untuk pertanyaan ini , saya telah membuat fungsi Skrip Google Apps, yang menghitung jumlah kumulatif rentang. Martin Hawksey di Google+ memberi komentar tentang cara penghitungan jumlah kumulatif yang lebih efisien:

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;
}

Pertanyaan saya adalah: dapatkah ini dicapai dengan penggunaan formula?

Jacob Jan Tuinstra
sumber
Permintaan maaf atas jawaban yang sangat terlambat, saya hanya melihat dia memasukkan "Terkait" di sebelah kanan.
AdamL

Jawaban:

30

Iya nih:

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

Contoh Jumlah Kumulatif

Angka-angka dalam lingkaran hijau adalah jumlah yang dijumlahkan, ArrayFormula mengisi semua yang lain berdasarkan sel yang ditempelkan ke dalamnya, dalam contoh ini saya menempelkan di A11, B1, dan C1 untuk menunjukkan efeknya.

Spreadsheet yang saya buat beberapa waktu lalu ini mencoba menjelaskan bagaimana MMULT dapat digunakan untuk masalah seperti ini, dan juga menunjukkan solusi SUMIF pada salah satu lembar, yang dapat (dan mungkin harus) digunakan untuk kasus khusus seperti yang ada dalam pertanyaan ini.

AdamL
sumber
Saya mengambil formula ini satu kali (saya pikir itu milik Anda) di Forum Google: SUMIF (ROW (A: A); "<" & ROW (A: A)), itu tidak berhasil. Yang ini.
Jacob Jan Tuinstra
Gambar dalam jawaban diedit oleh anggota lain: + Xavier Casto
AdamL
1
@Fogest, saya menggunakan produk yang disebut "Snagit" mencari tahu lebih lanjut di techsmith.com/download/snagit
Xavier Casto
@XavierCasto Oh, saya sudah menggunakan ini PANJANG yang lalu, tidak ingat itu memiliki ini, meskipun itu sudah lama sekali. Terima kasih atas jawabannya, saya suka produk-produk dari techsmith.
ComputerLocus
31

Dengan asumsi Anda ingin:

  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)

dll ...

Kemudian Anda dapat menggunakan: di =sum($A$1:A1)mana A1awal angka untuk dijumlahkan. Masukkan formula itu di B1(atau di mana pun Anda inginkan) dan isi, dan itu akan menjumlahkan semua sel hingga dan termasuk baris Anda berada. Sebagai alternatif, Anda dapat menggunakan =Ax+Bx-1(x = baris saat ini, data dalam A, jumlah kumulatif dalam B) dari bagian "rumus B" di atas.

Farfromunique
sumber
7
Ini tampaknya berhasil dan jauh lebih sederhana daripada jawaban yang diterima
K Raphael
1
setuju, ini lebih sederhana dan berfungsi dengan mulus!
loretoparisi
1

Sementara jawaban yang diterima ada di tempat, ia memiliki kerugian besar karena fakta bahwa parameter terakhir dari SUMIFkebutuhan harus selalu "rentang yang valid" sehingga ketika datang ke beberapa perhitungan total berjalan lebih maju MMULTadalah pilihan yang lebih baik:

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

0

pengguna0
sumber