Saya sedang mengerjakan lembar excel, dan mencoba mendapatkan kejadian terbaru dari suatu peristiwa dari beberapa lembar. Saat ini saya memiliki tiga lembar.

Lembar 1 disebut "Resep", dan berisi 9 resep, masing-masing dengan nomor resep unik:

enter image description here

Saya memiliki dua lembar lainnya, "2017", dan "2016", di mana saya mencantumkan beberapa tanggal, resep mana yang dibuat pada tanggal tersebut, dan siapa yang membuatnya:

enter image description here

enter image description here

Sekarang yang saya inginkan, ada di lembar Resep, untuk mencantumkan setiap resep berapa kali dibuat, terakhir kali dibuat, dan oleh siapa. Seperti:

enter image description here

Berapa kali itu dibuat cukup mudah dengan fungsi hitungan. Tapi yang terbaru dibuat lebih rumit. Saya menemukan artikel ini< /a>, yang memiliki fungsi untuk mendapatkan contoh terbaru dari sesuatu, yang sangat membantu. Jadi saya menggunakan rumus ini:

=INDEX('2017'!$A$2:$A$10,SUMPRODUCT(MAX(ROW('2017'!$C$2:$C$10)*($A2='2017'!$C$2:$C$10))-1))

Untuk mendapatkan saya ketika resep dibuat terakhir pada tahun 2017, yang bekerja cukup baik:

enter image description here

Tapi seperti yang Anda lihat, ketika datang ke muffin blueberry, itu tidak berhasil, karena resep itu tidak dibuat pada tahun 2017. Saya perlu memperluas formula untuk bekerja selama beberapa tahun. Saya berpotensi menambahkan lebih banyak tahun di masa lalu juga. Saya pikir saya bisa menggabungkan beberapa fungsi di atas menjadi fungsi MAX raksasa, satu untuk setiap tahun, seperti:

=MAX(
INDEX('2017'!$A$2:$A$10,SUMPRODUCT(MAX(ROW('2017'!$C$2:$C$10)*($A2='2017'!$C$2:$C$10))-1)),
INDEX('2016'!$A$2:$A$10,SUMPRODUCT(MAX(ROW('2016'!$C$2:$C$10)*($A2='2016'!$C$2:$C$10))-1))
)

Tapi itu tidak berhasil. Apa cara termudah untuk melakukan ini?

1
eshellborn 12 Maret 2017, 18:10

2 jawaban

Jawaban Terbaik

Fungsi IFERROR mengembalikan nilai normal jika berhasil atau nilai yang diberikan jika gagal. Melewati nol kembali ke MAX sudah cukup.

=MAX(
    IFERROR(INDEX('2017'!$A$2:$A$10,SUMPRODUCT(MAX(ROW('2017'!$C$2:$C$10)*($A2='2017'!$C$2:$C$10))-1)), 0),
    IFERROR(INDEX('2016'!$A$2:$A$10,SUMPRODUCT(MAX(ROW('2016'!$C$2:$C$10)*($A2='2016'!$C$2:$C$10))-1)), 0)
)

FWIW, mungkin ada fungsi pseudo-MAXIF yang lebih efisien. Subfungsi KECIL fungsi AGGREGATE akan memungkinkan Anda untuk mendapatkan yang terbaru, terbaru kedua, terbaru ketiga, dll.

2
user4039065user4039065 12 Maret 2017, 15:27

Yang paling mudah adalah memiliki semua data dalam satu rentang.

Opsi lain bisa berupa rangkaian fungsi IFERROR, tetapi itu akan menjadi sedikit berantakan seiring waktu:

= IfError( Index2007, IfError( Index2006, IfError( Index2005, ) ) )

Ada juga opsi non-formula lain yang lebih canggih seperti Power Query atau Microsoft Query yang menurut saya sedikit lebih tepat, tetapi mungkin lebih sulit untuk dipelajari.

1
Slai 12 Maret 2017, 22:23