Saya memiliki tantangan di Excel 2010. Saya memiliki daftar ID dengan variabel berikut: issue_date, nilai kumulatif, tanggal jatuh tempo. Setiap ID memiliki tanggal penerbitan dan tanggal jatuh tempo yang berbeda, tetapi semuanya berada dalam kisaran (periode analisis) antara 2 Januari 2007 dan 23 Desember 2011. Contoh singkat di bawah ini:
Id memiliki 3 nilai berbeda: satu untuk 2 Jan 2007 (nilai: 1000); lain untuk 5 Mei 2007 (nilai: 1500) dan yang terakhir untuk 4 Desember 2007 (nilai: 2700). Yang saya inginkan adalah agar id ini memiliki nilai kumulatif yang diduplikasi selama durasi itu aktif.
Jadi, dalam hal ini, selama periode 2 Januari 2007 hingga 4 Mei 2007 nilainya akan menjadi (1000); kemudian untuk periode 5 Mei 2007 hingga 3 Desember 2007 nilainya akan menjadi 1500; akhirnya untuk periode antara 4 Desember 2007 hingga tanggal jatuh tempo (katakanlah 3 Mar 2010) nilainya akan tetap di 2.700.
Ini adalah tantangan berat bagi saya karena saya memiliki 355 id yang berbeda. Beberapa id memiliki nilai unik, artinya nilai kumulatifnya akan direplikasi hingga tanggal jatuh tempo. Namun, ada id lain yang memiliki nilai kumulatif berbeda (pada tanggal yang berbeda) yang harus diatur dengan benar.
Output akhir akan menjadi satu set tanggal berurutan antara 2 Januari 2007 dan 23 Desember 2011 (dalam kolom) dan kemudian 355 baris data yang dialokasikan secara bersamaan. Saya dapat mengirim contoh singkat di Excel jika perlu memiliki gagasan yang lebih jelas tentang permintaan tersebut.
sumber
Jawaban:
Untuk melakukan ini, Anda perlu memijat data Anda sedikit sebelum membuat matriks.
ID
danissue_date
(A hingga Z) dalam urutan atau prioritas itu.Tambahkan kolom
end_date
. Nilai dariend_date
akan menjadi lebih awal dari tanggal jatuh tempo untuk catatan itu dan satu hari sebelum issue_date berikutnya untuk ID spesifik itu. AsumsiID
ada di kolom A,issue_date
ada di kolom B, danmaturity_date
ada di kolom D, masukkan rumus berikut untukend_date
dari catatan pertama. Mengisi.=TEXT(IF(A3=A2,MIN(B3-1,D2),D2),"mmm d, yyyy")
Di lembar lain, buat kerangka kerja untuk matriks Anda. Buat label kolom dengan memasukkan tanggal pertama dan kemudian mengisi sampai ke tanggal akhir Anda. Anda bisa mendapatkan label baris dengan melakukan filter lanjutan untuk catatan unik pada ID di tabel Anda.
Di sel kiri atas matriks Anda (B3 dalam contoh ini), masukkan rumus berikut. 'Raw' adalah nama lembar dengan data asli Anda.
=SUMPRODUCT(Raw!$C$2:$C$23,--(Raw!$A$2:$A$23=Matrix!$A3),--(DATEVALUE(Raw!$B$2:$B$23)<=Matrix!B$2),--(DATEVALUE(Raw!$E$2:$E$23)>=Matrix!B$2))
Isi berulang-ulang untuk mengisi matriks Anda. Ini akan mengembalikan nilai ID pada tanggal itu dan 0 jika tidak ada data yang tersedia untuk tanggal itu.
SUMPRODUCT () adalah salah satu fungsi yang paling tidak intuitif tetapi paling bermanfaat di Excel. Pada dasarnya apa yang dilakukannya adalah mengalikan nilai yang sesuai dari setiap argumen array dan kemudian merangkum produk-produk ini. Di sini array adalah nilai kumulatif dari tabel dan array 0s dan 1s yang menunjukkan apakah kriteria telah dipenuhi atau tidak. Oleh karena itu, hanya nilai yang memenuhi semua kriteria yang akan memiliki produk bukan nol. Karena hanya satu catatan yang harus memenuhi semua kriteria, jumlahnya hanya akan menjadi nilai itu.
Saya menggunakan tanggal sebagai teks di sini, tetapi rumus ini harus berfungsi untuk tanggal yang diformat sebagai tanggal di Excel juga. Itu
TEXT()
danDATEVALUE()
bit berlebihan dalam hal itu, tetapi semuanya harus bekerja samasumber