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

Kirim email ke