Minggu, 25 Agustus 2013

[belajar-excel] Digest Number 2492

4 New Messages

Digest #2492
1a
Re: Tes Looping For ... Next dan For each ... Next by "Hendrik Karnadi" hendrikkarnadi
3a
Link Cell update by yusajing_ehm
3b
Re: Link Cell update by "hendrik karnadi" hendrikkarnadi

Messages

Sat Aug 24, 2013 10:03 pm (PDT) . Posted by:

"Hendrik Karnadi" hendrikkarnadi

Terima kasih pak De atas pencerahannya.

Salam, 
HK

Sent from Samsung MobileDe Premor <de@premor.net> wrote:Proses Pembacaan dan Penulisan dari VBA ke Lembar Kerja dan sebaliknya sangat berpengaruh pada kecepatan proses,

Setelah dilakukan pemangkasan kode untuk melihat kinerja si looping saja, ternyata hasilnya sangat berbeda, karena si for next hanya melakukan itungan biasa sedangkan for each next membaca masing masing sel didalam range yang sudah ditentukan sebelumnya (100 Juta Cell)

Sub xTes2()
    Dim trow, total, r
    trow = Timer
    For r = 1 To 100000000
    Next
    total = Timer - trow
    Range("E2") = total
End Sub

Sub xTes3()
    Dim trow, total, r As Range, Rng As Range
    Set Rng = Range("A1:CV1000000&quot;)
    trow = Timer
    For Each r In Rng
    Next
    total = Timer - trow
    Range("E3") = total
End Sub

On 25-08-2013 1:02, hendrik karnadi wrote:
Terima kasih Mr Kid.
Untuk Looping 100000 waktunya hanya 0,063 detik, tapi angkanya 0 semua, bukan 1 s/d 100000.

Salam,
HK

From: Mr. Kid <mr.nmkid@gmail.com>
To: BeExcel <belajar-excel@yahoogroups.com>
Sent: Sunday, 25 August 2013, 0:44
Subject: Re: [belajar-excel] Tes Looping For ... Next dan For each ... Next

 
Coba :
Public sub Ikutan()
    dim rng as range
    dim lArr(1 to 60000,1) as long, lLoop as long
    dim dblTime as double
    dbltime=timer
    set rng=range("z1:z60000")
    for lLoop=1 to 60000
         larr(lLoop,1)=lLoop
    next lLoop
    rng.value=lArr
    dblTime=timer-dbltime
    msgbox "Waktu proses : " & dbltime & " detik"
end sub

Katanya fungsi transpose Excel terbatasi array-nya sebanyak 2^16, ada yang bilang 2^24. Mungkin yang 2^16 di Office 32 bit dan 2^24 di Office 64 bit (tapi gak yakin juga kalau begitu). Yang jelas, tidak ada dokumentasi resmi tentang hal ini.

Sebuah cell pada dasarnya dibentuk sebagai array 2 dimensi (1 to 1,1 to 1)

Walaupun topik ini menggunakan baris kode seperti membuat nomor urut, sebaiknya setiap pembuatan nomor urut tidak terpaku pada proses loop seperti ini saja. Untuk proses komputasi yang tidak sekedar membuat nomor urut, maka topik ini bisa menjadi sebuah wacana untuk menyusun solusi masalah yang dihadapi pada dunia nyata.

Wassalam,
Kid.

2013/8/24 hendrik karnadi <hendrikkarnadi@yahoo.com>
 
Terima kasih Miss Jan atas variasi codenya.

Hasil tes terakhir dengan looping 60000 adalah sebagai berikut:
16.81  detik
<--TES1 'For ... Next dengan formula
1.24 detik
<--TES2 &#39;For ... Next tanpa formula
1.37 detik
<--TES3 &#39;For each ... Next tanpa formula (For each r in Rng)
1.34 detik
<--TES4 &#39;For each ... Next dengan formula (For each Rng in Rng)
0.05 detik
<--TES5 (MJR) 'Tranpose Array

Code Miss Jan saya modifikasi sbb:
Sub Tes5()
    Dim TStart As Single
    Dim myArray(0 To 59999) As Long 'sebelumnya 9999
    Dim i As Long
    Dim rng As Range
    
    TStart = Timer
    For i = 1 To 60000 'sebelumnya 10000
        myArray(i - 1) = i
    Next i
    Set rng = Range("o1:o60000") 'sebelumnya 10000
    rng.Value = Application.WorksheetFunction.Transpose(myArray)
    Range("E5").Value = Format(Timer - TStart, "#,##0.0000")
End Sub

Jadi code Miss Jan is the best.

Kesimpulannya:
- Tes2 lebih cepat dari Tes3 dan Tes4 (saya sependapat dengan Miss Jan) karena ada proses pencarian r atau Rng pada       code: Range("C" & r.Row) = r.Row atau Range("D" & Rng.Row) = Rng.Row
- Proses Array jauh lebih cepat, namun menyisakan satu pertanyaan .... (mengapa 100k atau bahkan 70k selalu gagal         dengan pesan kesalahan "Type mismatch" pada code:
rng.Value = Application.WorksheetFunction.Transpose(myArray)

Salam,
HK

From: Jan Raisin <miss.jan.raisin@gmail.com>
To: belajar-excel@yahoogroups.com
Sent: Saturday, 24 August 2013, 14:10
Subject: Re: [belajar-excel] Tes Looping For ... Next dan For each ... Next

 
boleh jawab kan pak Hendrik..

sepengetahuan Jan, For Each - Next bekerja lebih cepat dibandingkan dengan For To - Next, karena pada For Each tidak ada proses menghitung lebih dahulu
ilustrasinya adalah begini:

Di atas meja makan ada combro (kenapa combro? karena Jan senang makan combro xixixixi ^_^)

perintah 1: Untuk setiap combro yang ada, makan sampai habis >> for each
akan lebih cepat prosesnya jika dibandingkan dengan

perintah 2: Untuk combro ke 1 sampai ke sekian makan sampai habis >> for to
karena pada perintah ke-2 ada proses menghitung dahulu sebelum Be-Exceller memakan combro yang ada di atas meja

Tetapi hal ini akan akan berbeda jika ada pekerjaan yang harus dijalankan lagi di dalam blok for each
pekerjaannya mana? bisa dilihat dari setiap titik yang ada dalam script
1 buah titik mewakili 1 buah pekerjaan atau proses

misal:
range("a1").select
selection.value = 1

akan diproses lebih lama dibandingkan script
range("a1").value = 1

walau pun perbedaannya di komputer sekarang hampir tidak terasa

coba lihat di prosedur Tes3 dan Tes4 saat akan memasukan nilai ada 1 buah pekerjaan yang harus dilakukan dahulu yaitu mencari nilai barisnya terlebih dahulu
sedangkan di prosedur Tes2 tidak ada pekerjaan tersebut

oia.. Jan mau nyumbang script.. tapi minta tolong semua batasannya diturunin dari 100k baris menjadi 10k baris
karena pada saat proses transpose untuk 100k selalu gagal.. mungkin nanti mr Kid atau pak Anton bisa memberikan penjelasan penyebab gagalnya transpose tersebut.

prosesnya memanfaatkan array, karena proses baca tulis ke range lebih lambat dibandingkan proses baca tulis melalui array

Sub Tes5()
    Dim TStart As Single
    Dim myArray(0 To 9999) As Long
    Dim i As Long
    Dim rng As Range
    
    TStart = Timer
    For i = 1 To 10000
        myArray(i - 1) = i
    Next i
    Set rng = Range("o1:o10000")
    rng.Value = Application.WorksheetFunction.Transpose(myArray)
    Range("E5").Value = Format(Timer - TStart, "#,##0.0000")
End Sub

silakan coba dibandingkan hasilnya, di komputer Jan script tersebut berjalan 32 x lebih cepat dibandingkan Tes2

salam,

-Miss Jan Raisin-

Pada 24 Agustus 2013 11.25, hendrik karnadi <hendrikkarnadi@yahoo.com> menulis:
 
Dear Be Excellers,
Terlampir adalah hasil uji coba (tes) Looping For ... Next dan For each ... Next pake timer.

Pertanyaan:
Mengapa dengan menggunakan For ... Next (Tes2, tanpa formula) hasilnya lebih cepat dibandingkan dengan For each ... Next (Tes3 dan Tes 4).

Salam,
HK

Sat Aug 24, 2013 11:48 pm (PDT) . Posted by:

"Alen" alen_hafit

Selamat siang para master Excel.

mohon bantuannya sekali,
untuk fitur protect sheet, apakah ada caranya jika kita mem-protect sell pada sheet tersebut jika sudah terisi.
jadi, saat sell tersebut masih blank, kita user masih bisa menginput data, dan saat sudah terisi, secara otomatis sheet protect.

mohon bantuannya master .....

terimakasih .....
selamat siang.

Sun Aug 25, 2013 12:41 am (PDT) . Posted by:

yusajing_ehm

Hi Para Master Excel,

Mau minta pencerahan lagi nih master,

Misal saya menggunakan 2 cell yaitu cell A1 dan A2, misal A1 = "abc"

Nah pertanyaannya adalah bisa ga ketika saya klik cell A1 maka cell A2 berubah valuenya sama dengan A1 (note : hanya terjadi ketika A1 di click)

Mohon pencerahnannya.
Thank you
Powered by Telkomsel BlackBerry�

Sun Aug 25, 2013 2:32 am (PDT) . Posted by:

"hendrik karnadi" hendrikkarnadi

Hi yusajing_ehm,

Bisa, pake Macro.

Copas (copy paste)
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Target.Address = "$A$1" Then
        Range("A2") = Target
        Cancel = True
    End If
End Sub
di VBE Sheet, Sheet1, seperti gambar terlampir.

Untuk menjalankannya,
- Macro harus dalam keadaan Enable
- Double Click sel A1.

Salam,
HK

________________________________
From: "yusajing_ehm@yahoo.com" <yusajing_ehm@yahoo.com>
To: Belajar Excel Grups <belajar-excel@yahoogroups.com>
Sent: Sunday, 25 August 2013, 14:41
Subject: [belajar-excel] Link Cell update


Hi Para Master Excel,

Mau minta pencerahan lagi nih master,

Misal saya menggunakan 2 cell yaitu cell A1 dan A2, misal A1 = "abc"

Nah pertanyaannya adalah bisa ga ketika saya klik cell A1 maka cell A2 berubah valuenya sama dengan A1 (note : hanya terjadi ketika A1 di click)

Mohon pencerahnannya.
Thank you
Powered by Telkomsel BlackBerry®

------------------------------------

=====================================================================
Untuk memudahkan tim penyusun materi Belajar Excel yang lebih sesuai kebutuhan member, silakan ungkapkan permasalahan yang kerap ditemui dalam menggunakan
Excel sehari-hari atau hal-hal yang ingin dipelajari dalam jangka dekat ini. Mohon diprioritaskan dari yang sering ditemui sampai yang ingin dipelajari.
Isi sesuai kelompoknya (fitur-fitur, formula-formula tertentu yang masih membingungkan, otomasi atau pemrograman dalam Excel [Macro - VBA], hal lainnya yang membuat Anda kesulitan dalam mempelajari Excel).
Boleh mengisi berulang kali untuk menambah uneg-uneg yang ingin diungkapkan.
Link untuk menuangkan seluruh uneg-uneg tersebut ada di :
http://tech.groups.yahoo.com/group/belajar-excel/database?method=addRecord&tbl=3
=====================================================================
Langkah kecil Anda dalam mengisi database bisa menjadi langkah pertama yang bermanfaat besar untuk kita semua.
=====================================================================

----------------------------------------------------------
bergabung ke
milis (subscribe), kirim mail kosong ke:
belajar-excel-subscribe@yahoogroups.com

posting ke milis, kirimkan ke:
belajar-excel@yahoogroups.com

berkunjung ke web milis
http://tech.groups.yahoo.com/group/belajar-excel/messages

melihat file archive / mendownload lampiran
http://www.mail-archive.com/belajar-excel@yahoogroups.com/
atau (sejak 25-Apr-2011) bisa juga di :
http://milis-belajar-excel.1048464.n5.nabble.com/

menghubungi moderators & owners: belajar-excel-owner@yahoogroups.com

keluar dari membership milis (UnSubscribe):
kirim mail kosong ke  belajar-excel-unsubscribe@yahoogroups.com
----------------------------------------------------------Yahoo! Groups Links

    http://docs.yahoo.com/info/terms/
GROUP FOOTER MESSAGE
=====================================================================
Untuk memudahkan tim penyusun materi Belajar Excel yang lebih sesuai kebutuhan member, silakan ungkapkan permasalahan yang kerap ditemui dalam menggunakan Excel sehari-hari atau hal-hal yang ingin dipelajari dalam jangka dekat ini. Mohon diprioritaskan dari yang sering ditemui sampai yang ingin dipelajari.
Isi sesuai kelompoknya (fitur-fitur, formula-formula tertentu yang masih membingungkan, otomasi atau pemrograman dalam Excel [Macro - VBA], hal lainnya yang membuat Anda kesulitan dalam mempelajari Excel).
Boleh mengisi berulang kali untuk menambah uneg-uneg yang ingin diungkapkan.
Link untuk menuangkan seluruh uneg-uneg tersebut ada di :
http://tech.groups.yahoo.com/group/belajar-excel/database?method=addRecord&tbl=3
=====================================================================
Langkah kecil Anda dalam mengisi database bisa menjadi langkah pertama yang bermanfaat besar untuk kita semua.
=====================================================================

---------------------------------------------------------------------
bergabung ke milis (subscribe), kirim mail kosong ke:
belajar-excel-subscribe@yahoogroups.com

posting ke milis, kirimkan ke:
belajar-excel@yahoogroups.com

berkunjung ke web milis
http://tech.groups.yahoo.com/group/belajar-excel/messages

melihat file archive / mendownload lampiran
http://www.mail-archive.com/belajar-excel@yahoogroups.com/
atau (sejak 25-Apr-2011) bisa juga di :
http://milis-belajar-excel.1048464.n5.nabble.com/

menghubungi moderators & owners: belajar-excel-owner@yahoogroups.com

keluar dari membership milis (UnSubscribe):
kirim mail kosong ke  belajar-excel-unsubscribe@yahoogroups.com
---------------------------------------------------------------------

Tidak ada komentar:

Posting Komentar