Rata-rata Excel dan jika array - merampingkan input

1

Saya memiliki kumpulan data yang dikumpulkan di beberapa perusahaan dan kategori. Saya perlu menggabungkan berbagai perusahaan dan rata-rata di berbagai kategori. Saya tahu solusinya adalah rumus array rata-rata, tapi saya bertanya-tanya apakah ada cara untuk membuat semuanya lebih cepat. Inilah contoh (sangat disederhanakan) dari apa yang saya kerjakan.

Contoh sederhana

Katakanlah saya perlu meratakan perusahaan A dan B bersama-sama untuk setiap klasifikasi secara terpisah. Saya tahu rumusnya seperti ini:

{= AVERAGE (JIKA (($ A $ 5: $ A $ 13 = {"A", "B"}) * ($ B $ 5: $ B $ 13 = "H"), $ C $ 5: $ C $ 13))}

Tetapi kemudian saya harus menjalankannya untuk setiap klasifikasi (dan pada kenyataannya mungkin ada beberapa kombinasi perusahaan / klasifikasi untuk diubah) sehingga mungkin ada 5-10 formula untuk diperbarui. Lalu, saya perlu mengagregasi perusahaan yang berbeda, katakanlah B, C, dan D. Saya tahu itu terlihat seperti:

{= AVERAGE (JIKA (($ A $ 5: $ A $ 13 = {"B", "C", "D"}) * ($ B $ 5: $ B $ 13 = "H"), $ C $ 5: $ C $ 13))} {= AVERAGE (IF (($ A $ 5: $ A $ 13 = {"B", "C", "D"}) * ($ B $ 5: $ B $ 13 = "N"), $ C $ 5: $ C $ 13))}, dll

Pertanyaan saya adalah, adakah cara agar saya dapat meletakkan potongan {"B", "C", "D"} di sel lain yang dapat saya ubah dengan cepat dan kemudian mereferensikan sel itu sehingga saya dapat menghindari mengubah segalanya dengan tangan setiap kali?

nama yang salah
sumber

Jawaban:

1

Namun dimungkinkan, Anda mungkin perlu menggunakan fungsi Ditentukan Pengguna Sederhana untuk Membagi daftar perusahaan yang Dipisahkan Koma menjadi array. Dalam contoh ini A1: daftar perusahaan A5. B1: B5 sebagai "H" dan C1: C5 dirata-rata berdasarkan rumus Anda. F2 mengembalikan rata-rata & Daftar perusahaan disebutkan dalam H1 (Dipisahkan Koma)

Tekan ALT+ F11untuk mengakses VBA Editor dan Sisipkan Modul dari Sisipkan Menu. Buka Modul dan rekatkan kode berikut ke dalamnya.

Public Function MyArray(strTest As String)
   MyArray = Split(strTest, ",")
End Function

Sekarang di F2 Anda memiliki rumus Anda yang menggunakan fungsi MyArray ini.

=AVERAGE(IF((A1:A5=MyArray(H1))*(B1:B5="H"),C1:C5))

Tekan CTRL+ SHIFT+ ENTERuntuk membuat rumus array dan Anda memiliki hasil yang diinginkan seperti yang diinginkan.

masukkan deskripsi gambar di sini

patkim
sumber
1

Anda dapat menempatkan pencarian yang diinginkan dalam rentang yang berdekatan dan menggunakan:

=AVERAGE(AVERAGEIFS(C:C,B:B,"H",A:A,E1:INDEX(E:E,MATCH("zzz",E:E))))

Dan gunakan Ctrl-Shift-Enter daripada Enter saat keluar dari mode Edit. Jika dilakukan dengan benar, Excel akan menempatkan {}Sekitar rumus.

Kemudian Anda dapat meletakkan pencarian yang diinginkan mulai dari E1 ke bawah.

masukkan deskripsi gambar di sini

Scott Craner
sumber