Pak Kid . Terima kasih.
atas penjelasan nya . --- jadi ada pilihan --- mengapa aku nga pakai fungsi SUM saja -- dari pada pakai SUMIF Tapi rasanya aku tetap pakai loop saja . waktunya dibawah 2 menit . (111.05 detik) besar kemungkinan : walaupun sumif --- aku ganti menjadi fungsi sum dengan bantuan dari komlom L (sebagai data awal) dan kolom M (sebagai data akhir) dari perjumlahan , besar kemungkin waktu nya di atas 2 menit , apalagi kalau pakai sumproduck formula kelas berat . memang didalam loop --- itu cuma sekali jalan saja . (walaupun row nya banyak ) Salam Lukman. NB : baru coba fungsi countif saja -- sudah diatas 2 menit . (kolom K) saja. 2017-03-12 9:17 GMT+07:00 'Mr. Kid' mr.nm...@gmail.com [belajar-excel] < belajar-excel@yahoogroups.com>: > > > Hai Lukman, > > Tentang : > 1. bagaimana untuk mendapatkan > market cap (sheet record) = jumlah pada hari yg sama dari = close > * Listed Share (sheet OHLC) > > jika dengan formula, maka bisa memanfaatkan fungsi SumProduct. > > yang perlu diingat adalah karakteristik SumProduct yang bekerja pada > array, sehingga berpotensi akan lambat ketika tidak membatasi area range > yang dikalkulasi. > > 2. mengapa pakai looping (111.05 ) , lebih cepat dari pada pakai formula > di macro (673.38) ? > Selisih waktu nya sangat jauh. > > Mengkalkulasi sesuatu dengan VBA bisa melalui perhitungan tiap item yang > dikalkulasi dengan proses loop, memanfaatkan worksheet function dalam VBA, > atau dengan memasang formula dengan VBA, maupun meng-evaluate suatu bunyi > formula dengan VBA. > > Jadi, ada baiknya Anda pahami dulu perbedaannya. > > Biasanya, kalkulasi tiap item dengan loop berusaha untuk sesedikit > mungkin proses loop itu sendiri. Contohnya, akan menjumlahkan data berdasar > kriteria tertentu dengan kriteria tersebut ada di suatu tabel tersendiri. > Maka proses loop diusahakan cukup melakukan loop 1 kali pada data saja jika > memungkinkan. > > Kalkulasi dengan worksheet function (berbeda dengan formula loh ya), > ciri umumnya adalah menggunakan fungsi-fungsi yang biasa dipakai di dalam > worksheet untuk menyusun formula. Contohnya seperti worksheetfunction.SUM > yang menggunakan fungsi SUM. > > Kalkulasi dengan formula dalam VBA biasanya berupa memanfaatkan > pemasangan formula ke dalam sheet dan menyerahkan proses kalkulasi formula > tersebut kepada Excel Calculation. Proses ini biasanya tidak membutuhkan > loop apapun. Contoh : range("b1:b5").formula="=Row()" > > Kalkulasi dengan evaluate mirip dengan kaklkulasi dengan formula dalam > VBA, hanya saja, proses kalkulasi dilakukan langsung tanpa proses menulis > formula ke dalam cells. Tidak banyak kasus yang bisa secara leluasa > menggunakan cara ini seutuhnya. > > Apa beda penggunaan formula dengan worksheet function ? > > Penggunaan formula akan lebih luwes dan luas, karena penulisan formula > bisa dicoba dulu dalam worksheet dan digunakan apa adanya bunyi formula > yang terbentuk. > > Selain itu, penggunaan nested function dan array formula sangat > dimungkinkan ketika menggunakan formula dan tidak mudah atau tidak > dimungkinkan jika menggunakan worksheet function. Contohnya adalah formula > =Sum( Index( data!A:A , report!b3 ):Index( data!A:A , report!C3 ) ) > yang merupakan penjumlahan dinamis dengan area range yang diproses dibuat > terbatas seperlunya agar tidak memberatkan kerja kalkulasi Excel. > Andai di sheet report cells B3 bernilai 11 dan di sheet report C3 bernilai > 23, maka formula di atas setara =Sum( data!A11:A23 ) > Formula tersebut tidak mudah disusun dengan worksheet function. > > Contoh lain : =Small( IF( A1:A7 ="kid", B1:B7 ) , Row(1:7) ) yang > merupakan array formula filtering. > Formula seperti ini tidak bisa disusun dengan worksheet function. > > Jadi, menggunakan baris kode berbunyi : > range("a1").value=worksheetfunction.sum( range("z7:z9") ) > bukanlah proses formula dengan VBA, tetapi proses kalkulasi dengan fungsi > yang disediakan untuk digunakan dalam cells. > > > Worksheet function vs formula (memasang formula dalam cells) > > kecepatan kerja keduanya dapat dikatakan seimbang. > > terkadang, pada bentuk formula yang rumit, memasang formula akan > memudahkan penyusunan baris kode walau agak lama proses kalkulasinya. > > Khusus loop, > cara ini adalah yang tercepat, tetapi membutuhkan logika penyusunan proses > yang terus terasah. > Beberapa hal yang patut dipertimbangkan dalam loop : > 1. lakukan loop melalui array-nya sebanyak mungkin dibanding menggunakan > object (cells, worksheet, dsb) > > kalau bisa, hindari for each next > 2. simpan nilai ke suatu variabel (skalar maupun array) jika dibutuhkan > berulang-ulang atau akan dikalkulasi berulang-ulang, jangan membaca ulang > object > 3. pilih dan susun loop agar tidak melakukan loop yang sama berulang-ulang > dengan mengurutkan data dan kriteria > contoh : sheet data kolom A mulai baris 2 ada 900ribu record sorted > ascending. sheet kriteria kolom E mulai baris 2 ada 1000 kriteria sorted > ascending. Asumsinya bertipe numerik. Setiap baris sheet data di Kolom A > yang sama dengan setiap baris di sheet kriteria kolom E akan diproses. > Dim lRowD As Long, lRowK As Long > Dim lNilaiD As Long, lNilaiK As Long > lRowK = 2 > lNilaiK = Cells(lRowK, 5).Value > For lRowD = 2 To 900001 > lNilaiD = Cells(lRowD, 1).Value > If lNilaiD > lNilaiK Then > lRowK = lRowK + 1 > lNilaiK = Cells(lRowK, 5).Value > If lNilaiD = lNilaiK Then > 'lakukan proses terhadap data di baris lRowD > End If > ElseIf lNilaiD = lNilaiK Then > 'lakukan proses terhadap data di baris lRowD > End If > If lRowK > 1001 Then Exit For > Next lRowD > > Kira-kira demikian, > > Regards, > Kid > > > > > > > > > 2017-03-11 19:46 GMT+07:00 lkm jktind lkmjkt...@gmail.com [belajar-excel] > <belajar-excel@yahoogroups.com>: > >> >> >> 1. bagaimana untuk mendapatkan >> market cap (sheet record) = jumlah pada hari yg sama dari = >> close * Listed Share (sheet OHLC) >> >> 2. mengapa pakai looping (111.05 ) , lebih cepat dari pada pakai >> formula di macro (673.38) ? >> Selisih waktu nya sangat jauh. >> >> sheet OHLC : row hampir 900.000 >> sheet Record : row : 2819 >> >> >> >> Salam >> >> >> Lukman >> >> > >