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