Makasih Pak Lukman. Maaf kalau merepotkan. Wassalam, Kid. On Nov 26, 2012 11:22 PM, "lkm jktind" <[email protected]> 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 <[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 >>> >>> >> > >

