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?

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


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

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.