Pak Kid. Maaf sebelum nya yg hendak saya kabarkan. itu ternyata ada kesalahan dalam file nya. di range A1:E506286 : ini data . di range F2:I506286 : ini ada formula perkalian. dan dipaling kanan ada 4 colum lagi yg untuk memriksa hasil nya . dengan kondisi seperti itu , maka hasil nya seperti yg telah saya sampaikan.
Kemudian dites lagi dengan data hanya di range A1:F506286. dengan komputer A : dengan spek : intel 3450 I5 . dan memory 16 gb. hasil nya sebagai berikut : Tes_12 : 43.87240 Tes_14 : 3.23438 Tes_14a : 3.19010 Tes_14b: 3.16667 itu hasil rata dari tes sebanyak 3 kali . dengan komputer B : dengan spek : intel core to duo T7300 dengan memory 4 gb. data di flash disk Data di harddisk Tes_12 : 93.39453 92.50781 Tes_14 : 8.67578 8.36906 Tes_14a : 7.84766 12.33984 Tes_14b : 8.62891 11.03125 Dengan komputer A : s = 506286 Tes_17 : 13.69531 For r = 2 To s Cells(r, 6).Value = Cells(r, 2) + Cells(r, 3) + Cells(r, 4) + Cells(r, 5) Tes_18 : 16.39063 For r = 2 To s Cells(r, 7).Value = Application.WorksheetFunction.Sum(Range("B2:E2")) Tes_19 : 20.47656 For r = 2 To s Cells(r, 8).Value = Evaluate("=SUM(B2:E2)") Tes_20 : 80.28125 For r = 2 To 1000 Cells(r, 9).Formula = "=SUM(B2:E2)" Terakhir mau membandingkan : vlookup+ macth , hllopkup + macth , index , sumproduct. : : sumif , sumifs , sumproduct. kedua function itu yg banyak di gunakan. Selamat malam . Salam dari Lukman 2012/11/26 Mr. Kid <mr.nm...@gmail.com> > ** > > > Makasih Pak Lukman. > Maaf kalau merepotkan. > > Wassalam, > Kid. > On Nov 26, 2012 11:22 PM, "lkm jktind" <lkmjkt...@gmail.com> wrote: > >> ** >> >> >> Pak Kid . >> >> Hasil nya tes_14 : 8.30469 detik Tes_14a : 8.05469 detik dan >> Tes_14b : 6.41406 detik >> >> Terima kasih. >> >> >> Salam >> >> Lukman >> >> >> >> 2012/11/26 Mr. Kid <mr.nm...@gmail.com> >> >>> ** >>> >>> >>> Mumpung ada yang ngeTes... >>> >>> Kalau tes_14 diubah menjadi : >>> Sub Tes_14a() >>> Set Rng = Range("A2", Range("A1000000").End(xlUp)) >>> with rng >>> application.calculation=xlmanual >>> .Offset(0, 20).Formula = "=B2*C2" >>> .Offset(0, 21).Formula = "=D2*E2" >>> .Offset(0, 22).Formula = "=B2*D2" >>> .Offset(0, 23).Formula = "=C2*E2" >>> application.calculation=xlautomatic >>> >>> .Offset(0, 20).Value = .Offset(0, 20).Value >>> .Offset(0, 21).Value = .Offset(0, 21).Value >>> .Offset(0, 22).Value = .Offset(0, 22).Value >>> .Offset(0, 23).Value = .Offset(0, 23).Value >>> end with >>> End Sub >>> ada selisih waktunya (ukur waktu proses dengan timer ya) gak dengan yang >>> tes_14 >>> kemudian coba juga kalau menjadi : >>> Sub Tes_14b() >>> Set Rng = Range("A2", Range("A1000000").End(xlUp)) >>> with rng.Offset(0, 20) >>> .Formula = "=B2*C2" >>> .Value = .Value >>> end with >>> >>> with rng.Offset(0, 21) >>> .Formula = "=D2*E2" >>> .Value = .Value >>> end with >>> >>> with rng.Offset(0, 22) >>> .Formula = "=B2*D2" >>> .Value = .Value >>> end with >>> >>> with rng.Offset(0, 23) >>> .Formula = "=C2*E2" >>> .Value = .Value >>> end with >>> End Sub >>> ada selisih waktu atau tidak. >>> >>> >>> Dari hasil diatas . bila di kolom P berisi 3 macam formula . >>> maka harus di buat 3 macam range : misal >>> rng_A ---- > untuk formula A >>> rng_B -----> untuk formula B >>> >>> rng_C -----> untuk formula C >>> Atau >>> rng_D ---> kemudian formula A, B ,C bergantian di input >>> >> Pertanyaannya, kenapa kok kolom P harus diisi 3 formula ? >>> Jika 3 formula itu karena keadaannya berbeda-beda, mungkin bisa dibuat >>> formula universalnya. >>> Contoh : rng.formula="=if(a2=1,b2*c2,if(a2=2,d2*c2,e2*b2))" >>> hehehe... kayanya bukan seperti itu ya... :) >>> ya wis lah atur aja... >>> >>> >>> mengenai Temp file . ini akan membebani memory kah ? >>> Bila file : 'M:\data_saham\LK_WEB_100.xlsm = 55 mb, maka memory yg akan >>> terpakai juga 55 MB >>> >> Formula merujuk range di worksheet lain akan lebih lebih lambat >>> dibanding merujuk di worksheet yang sama. >>> Formula merujuk file lain lebih lambat dibanding merujuk di file yang >>> sama. >>> Formula merujuk ke file lain yang tertutup katanya bisa lebih lama lagi. >>> >>> >>> cara penulisannya di macro dengan file : >>> 'M:\data_saham\LK_WEB_100.xlsm untuk di jadikan file temp . dan cara >>> penghapusnya . >>> >> ke sheet temporary, bukan file temporary. Jadi konsepnya adalah >>> mengusahakan formula merujuk ke workbook yang sama tapi beda sheet jika >>> tidak mungkin merujuk ke sheet yang sama. >>> dim wbkA as workbook, wbkR as workbook >>> dim shtA as worksheet, shtTmp as worksheet >>> dim rng as range >>> >>> set wbka=thisworkbook >>> set shta=activesheet >>> set shttmp=sheets.add(after:=sheets(sheets.count)) >>> shttmp.name="Temp" >>> >>> set wbkr=workbooks.open("fullfilename_si_file_lain",readonly:=true) >>> wbkr.sheets("nama sheet referensi yang dirujuk >>> formula").range("a1:ai32000").copy >>> shttmp.range("a1").pastespecial xlpastevalues >>> wbkr.close false >>> wbka.activate >>> shta.activate >>> >>> set rng=shta.range("p6:p500000") >>> rng.formula="formula yang bunyinya sudah merujuk ke sheet bernama temp" >>> shta.calculate >>> rng.value=rng.value >>> >>> application.displayalerts=false >>> shttmp.delete >>> application.displayalerts=true >>> >>> Wassalam, >>> Kid. >>> >>> >>> 2012/11/26 lkm jktind <lkmjkt...@gmail.com> >>> >>>> Pak Kid. >>>> >>>> dengan data sebanyak 506.286 row. >>>> Tes_14 waktunya 9 detik. >>>> Tes_12 waktunya sudah 30 menit belum selesai. >>>> >>>> Sub Tes_14() >>>> Range("A2").Select >>>> Set Rng = Range("A2", Range("A1000000").End(xlUp)) >>>> Rng.Offset(0, 20).Formula = "=B2*C2" >>>> Rng.Offset(0, 21).Formula = "=D2*E2" >>>> Rng.Offset(0, 22).Formula = "=B2*D2" >>>> Rng.Offset(0, 23).Formula = "=C2*E2" >>>> Rng.Offset(0, 20).Value = Rng.Offset(0, 20).Value >>>> Rng.Offset(0, 21).Value = Rng.Offset(0, 21).Value >>>> Rng.Offset(0, 22).Value = Rng.Offset(0, 22).Value >>>> Rng.Offset(0, 23).Value = Rng.Offset(0, 23).Value >>>> End Sub >>>> >>>> Sub tes_12() >>>> >>>> For r = 2 To s >>>> Cells(r, 21).Value = Cells(r, 2) * Cells(r, 3) >>>> Cells(r, 22).Value = Cells(r, 4) * Cells(r, 5) >>>> Cells(r, 23).Value = Cells(r, 2) * Cells(r, 4) >>>> Cells(r, 24).Value = Cells(r, 3) * Cells(r, 5) >>>> Next >>>> >>>> Dari hasil diatas . bila di kolom P berisi 3 macam formula . >>>> maka harus di buat 3 macam range : misal >>>> rng_A ---- > untuk formula A >>>> rng_B -----> untuk formula B >>>> >>>> rng_C -----> untuk formula C >>>> Atau >>>> rng_D ---> kemudian formula A, B ,C bergantian di input >>>> >>>> untuk resize : akan saya pelajari lebih lanjut. >>>> >>>> mengenai Temp file . ini akan membebani memory kah ? >>>> Bila file : 'M:\data_saham\LK_WEB_100.xlsm = 55 mb, maka memory yg akan >>>> terpakai juga 55 MB >>>> >>>> Mohon pak Kid memberikan contoh : cara penulisannya di macro dengan >>>> file : >>>> 'M:\data_saham\LK_WEB_100.xlsm untuk di jadikan file temp . dan cara >>>> penghapusnya . >>>> >>>> >>>> Terima kasih . >>>> >>>> Salam >>>> >>>> Lukman >>>> >>>> >>> >> >