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

Kirim email ke