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
>>
>>
>  
>

Kirim email ke