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 <[email protected]> > ** > > > 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 <[email protected]> > >> 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 >> >> > >

