Senin, 26 Agustus 2013

[belajar-excel] Digest Number 2493

15 New Messages

Digest #2493
1a
Re: Link Cell update by "Mr. Kid" nmkid.family@ymail.com
2a
Re: Format Currency by "Mr. Kid" nmkid.family@ymail.com
3a
3b
4a
Conditional Formating by "Kamto, Tukino"
4b
4c
Re: Conditional Formating by "Kamto, Tukino"
5b
Re: Tes Looping For ... Next dan For each ... Next by "Mr. Kid" nmkid.family@ymail.com
6a
Memanfaatkan VLOOKUP by "Prodev SIMPLE PB" prodev_simple
6b
Re: Memanfaatkan VLOOKUP by "Bagus" bagus4bls
7
memperkecil file excel by "Prazt" praztmath

Messages

Sun Aug 25, 2013 4:41 pm (PDT) . Posted by:

"Mr. Kid" nmkid.family@ymail.com

Dengan VBA ya
- pastikan file di save as dengan type Macro Enabled Workbook (.xlsm) atau
Excel 97-2003 (.xls)
- ke VBE (ALT F11)
- double click sheet yang akan dikenai salin data A1 ke A2
- combobox object (combobox kiri) di lembar script pilih Worksheet
- combobox prosedur (combobox kanan) di lembari script pilih SelectionChange
- akan muncul blok prosedur Sub berbunyi Private Sub blablabla sampai End
Sub
- isi baris kode berikut dibaris kosong sebelum End Sub (dalam blok
prosedur)
if target.count=1 then
if target.column=1 then
if lenb(target.value)<>0 then
target.offset(1).value=target.value
endif
endif
endif

- sengaja tidak menggunakan blok with ... end with agar dapat terlihat
secara eksplisit maksud setiap baris kodenya.
- kembali ke workbook window (ALT F11)
- save file
- tutup workbook, lalu buka lagi, security macro dipilih Enable
- prosedur akan dikerjakan jika ada perpindahan cell. Jadi, jika cell aktif
adalah A1, lalu klik A1, maka prosedur tidak akan dijalankan.
- jika cell aktif diselain A1, lalu cell A1 diklik, maka prosedur akan
dijalankan.
- prosedur akan diproses setiap kali ada perpindahan cell aktif ke sebuah
cell di kolom A. Artinya, jika cell aktif sekarang di X7, lalu klik A123,
maka prosedur akan dijalankan untuk menulis di A124 atau 1 cell dibawah
cell yang diaktifkan.

Wassalam,
Kid.

2013/8/25 <yusajing_ehm@yahoo.com>

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

Sun Aug 25, 2013 4:45 pm (PDT) . Posted by:

"Mr. Kid" nmkid.family@ymail.com

Ternyata link-nya ndak merujuk ke file yang bisa di-download.

Moga-moga link yang lebih benar bisa segera ada.

Wassalam,
Kid.

2013/8/16 ancha_ansharullah <ancha_ansharullah@yahoo.co.id>

> **
>
>
> Dear BeExceller..
>
> Sebelumnya makasih untuk contoh file comboboxnya aku udah
> pelajarin.. mw nanya lagi nih aku udah buat format currency
> tapi kendalanya apabila textbox terisi angka 0 pas di enter
> textboxnya jadi kosong terus gimana juga membuat textbox
> default angka 0 makasih jawabannya.. file bisa di download
> di sini
>
>
> https://dl.boxcloud.com/bc/2/6a1223659ae0021c300011e5992306fa/oxsr6n5bVQhyic6N7TfrMf0sVTkQUOBIH0HsZBGRDI0si84Chpt_3ZjzaZYMPOwbyyATOQjCMtuz5i34lvwOPzn6vqjPIlTrSc5QsrWM9azon8_U4LjbzhWHmhk5Jz40E9L2kFWHtSdtuLT1BX4MbfVgUcmXL2YRkHmJrcahVWQ5KQK0xOfRvjrDClqzFucBBaze0dq56iRwqLHzNbl0P7gL6cvNs7mg02KndhKLXQDIaVStAnu-bUGjQ5Z7ZK9ACCUXnjvwVsO9ga9pY4BflF2xYLXBut7r5cf0L1fEapnSNIxs2SObp1tbXAk09NKPvx1lrxIWyQQkRsNm3mdwxtjimUpGZUkuqrRTMSe1FMtqUhZpOUrXcH81QcgeV4e9lE8FiWj5wdDfNY6aY6RKDeRzzDWT0dvtqh7n8-ZikQ0AljhsDuGL1Pv6dJWvuGuoE7Z9wcYTDn_h9Xhw7Me3vcHBrcaA-xBNQ0k9iXEyALa8u2jpXo6QFDKmCBJ-YmMblyumeiGmhjYrKe-p47PVICr7vUJSe5sQam3342HqvoMoWtMEg-zJTiNs3ruYD1_JfWR6Ovoj774boOnUuKo7KwnKSDtjGWqEBn46U3EwoNu6P9uX0_9oOyzlaOK8h6PK0dgPvztKbbsSyLKBAP1z9S-ja_B-iOM_wxDyFKKCP_lcrwroFKeFJOtdVImiNUd8CsA49da_Tx0NwFEIDMUZc7p5vzr4NIlR2Ct8rOSlXA7MBpoKmJhYrnbn5diTei2B6a56ImYSZ8rnNkOU27sFabO9LSZo0Lc9RI-B5_hebKI,/449ad410c14467e7c7fb417b9be88b52f08a286b31077a188a8f3210f7071c19/
>
>
>

Sun Aug 25, 2013 7:22 pm (PDT) . Posted by:

"Mulki" mulki_akbar

Assalamu'alaikum Wr. Wb.

Terimakasih ms.Jan atas pencerahannya yg pasti diketik dg penuh kesabaran :)

Oia, saya sempat otak atik sendiri dg menggunakan formula vlookup. Tp setelah melihat jawaban dari ms. jan saya berpikir formula yg saya buat kemungkinan penggunaannya mungkin saja terbatas, maaf blm sempat kirim formula yg dari saya :)

Sekali lagi terimakasih ms. jan atas pencerahannya.

Wassalam,
Mulki akbar
----- Original Message -----
From: Jan Raisin
To: belajar-excel@yahoogroups.com
Sent: Friday, August 23, 2013 9:45 AM
Subject: Re: [belajar-excel] Masalah pilih data dg List Box

æóÚóáóíúßõãõ áÓóøáÇóãõ æóÑóÍúãóÉõ Çááåö æóÈóÑóßóÇÊõåõ

Pak Mulki, solusi dari Jan adalah seperti ini:

Jawaban untuk pertanyaan: 1. Saat list box di sel B27 di klik hanya memunculkan 1 pilihan utk tiap data dlm kolom GROUP, misal : A, B dan C saja bukan AAA, BBB, CCC

>> Buat dahulu sebuah named range yang akan dipakai untuk data validasi, Jan akan ajarkan cara membuat named range yang dinamis dan dapat dipanggil melalui worksheet manapun selama masih berada dalam workbook yang sama

Perhatian !
tutorial ini dibuat pada excel 2010 yang sama ribbonnya mirip dengan excel 2007 dan 2013, untuk pengguna excel 2003 ke bawah silakan dicari padanannya karena Jan sudah tidak memiliki versi tersebut.. kalau ada yang ngotot minta dibuatkan tutorial untuk versi 2003 ke bawah mungkin bisa Jan usahakan tetapi Jan harus cari pinjaman komputer ke tetangga yang (--mungkin--) masih menggunakan versi tersebut.

caranya sbb:
>> Buat list data dengan sebuah header, letaknya kalo bisa dalam 1 buah sheet yang terpisah yang khusus dibuat sebagai penampung list-list yang akan digunakan.
dalam hal ini pilihannya hanya A, B, dan C saja.. untuk kedepannya karena named range besifat dinamis maka setiap penambahan atau pengurangan data akan otomatis mengubah Data Validasi yang akan digunakan

>> pada riibon Formula, blok Defined Names, klik Defined Name

sehingga muncul dialog box seperti berikut ini:

>> pada kotak nomor 1, beri nama range yang nanti akan dipanggil melalui menu Data Validasi, contoh nama yang digunakan adalah _myGroup_
>> pada kotak nomor 2, pilih scopenya adalah Workbook, agar named range ini dapat dipanggil melalui sheet mana pun selama masih berada dalam workbook yang sama
>> pada kotak nomor 3, diisi formula sebagai berikut, (misal data terletak pada sheet yang bernama List
=OffSet(List!A2, 0, 0, CountA(List!A:A) - 1, 1)
>> setelah itu klik OK

keterangan:
List!A2 = letak data pertama berada di sheet List pada cel A2

0 = nomor index baris data yang digunakan
0 = nomor index kolom yang digunakan
CountA(List!A:A) - 1 = banyaknya baris data yang digunakan, yaitu seluruh data di sheet List pada kolom A dikurangi dengan header

1 = banyaknya kolom data yang digunakan

>> bahasa manusianya adalah: ambil data pada sheet List mulai cel A2, dengan jumlah baris yang digunakan adalah seluruh data di kolom A yang ada isinya dikurangi dengan header dan jumlah kolom data adalah 1

>> setelah itu pasang named range yang telah dibuat pada sheet 1 di cell B29 dengan menggunakan fitur Data Validasi
>> letakan cell aktif pada sheet1 cel B29
>> pada ribbon Data, blok Data Tools, klik Data Validation

>> sehingga akan muncul dialog box seperti di bawah ini:

>> pada nomor 1, pilih List
>> pada nomor 2, masukan named range yang tadi telah dibuat
>> setelah itu klik OK

Jawaban untuk pertanyaan: 2. Saat list box di sel B27 di pilih, misal A maka pada sel B31 trus kebawah-nya bisa menampilkan list box yg datanya bisa dipilih sesuai keinginan saya saat tiap2 sel dibawahnya saya klik, misal saya klik di sel B31, B32, B33 & B34

>> blok cel B33 sampai dengan cel B36, lalu diisi dengan formula:
Index($C$4:$C$12,Small(If($B$4:$B$12=$B$29,Row(1:9)),Row(1:9)))

lalu diakhiri dengan menekan tombol CTRL Shift Enter sehingga muncul tanda kurung kurawal di awal dan akhir formula, jika setelah menulis formula tidak menekan 3 tombol ajaib tersebut maka akan menghasilkan error #Value

formula di atas dinamakan Array Formula sekolom

Perhatian !
untuk yang menggunakan regional setting Indonesian, ubah seluruh tanda koma pada formula di atas dengan tanda titik koma

formula di atas akan menghasilkan error berupa #NUM jika data tidak ditemukan, untuk mengatasi hal ini digunakan cara:

>> untuk pengguna excel 2007 ke atas, tambahkan formula berikut:
=IfError(ini_formula_yang_tadi_sudah_dibuat,"") lalu diakhiri dengan menekan tombol CTRL Shift Enter

>> untuk pengguna excel 2003 ke bawah, tambahkan formula berikut:
=If(IsErr(ini_formula_yang_tadi_sudah_dibuat),"",ini_formula_yang_tadi_sudah_dibuat) lalu diakhiri dengan menekan tombol CTRL Shift Enter

Pada kasus ini, IsErr dapat diganti dengan IsError yang akan menghasilkan hasil yang sama

Bahasa manusianya adalah: ambil data pada cel C4 sampai dengan cel C12 (Index($C$4:$C$12) dengan terurut secara Ascending (Small(...,Row(1:...))) dengan syarat bahwa pada nilai pada cell B4 sampai cel B12 harus sama dengan nilai pada cel B29 (If($B$4:$B$12=$B$29) dan jumlah baris datanya ada 9 baris (Row(1:9))

jawaban untuk pertanyaan: 3. Data Harga akan muncul sesuai pilihan list box pada Type

>> ubah Array Formula dengan data yang diambil adalah kolom D

file terlampir

æóÓóøáÇóãõ Úóáóíúßõãú æóÑóÍúãóÉõ Çááåö æóÈóÑóßóÇÊõåõ

-Miss Jan Raisin-

Pada 22 Agustus 2013 16.39, Mulki <mulki@aop.component.astra.co.id> menulis:

Assalamu'alaikum Wr. Wb,

Selamat sore ..

Sudah lama tidak mengikuti perkembangan milis B-Xl, semoga rekan2 selalu dlm keadaan sehat dan bersemangat :)

Mohon pencerahan rekan2 atas masalah saya ttg list box dan menampilkan data yg terhubung dg pilihannya.

Terimakasih atas pencerahan rekan2.

Wassalam,
Mulki akbar

Sun Aug 25, 2013 7:56 pm (PDT) . Posted by:

"Mulki" mulki_akbar

Assalamu'alaikum Wr. Wb.

Alhamdulillah dapat 2 pencerahan :)
Terimakasih atas solusi & link-nya mr.kid, meluncur ke TKP.

Wassalam,
Mulki
----- Original Message -----
From: Mr. Kid
To: BeExcel
Sent: Sunday, August 25, 2013 1:14 AM
Subject: Re: [belajar-excel] Masalah pilih data dg List Box

Wa'alaikumussalam Wr. Wb.

Untuk validation list terfilter, coba lihat di file yang ada disini. Pastikan susunan data referensinya menjadi 2 tabel terpisah, antara daftar untuk cell B27, dan tabel untuk item terfilter berdasar inputan user.

Untuk harga, gunakan fungsi VLookUp jika berdasar sebuah kriteria, atau array formula Index Match untuk multi kriteria, dan bisa juga dengan SumProduct atau array formula Sum. Pada Excel 2007 ke atas, bisa menggunakan SumIFs.

Wassalamu'alaikum Wr. Wb.
Kid.

2013/8/22 Mulki <mulki@aop.component.astra.co.id>

Assalamu'alaikum Wr. Wb,

Selamat sore ..

Sudah lama tidak mengikuti perkembangan milis B-Xl, semoga rekan2 selalu dlm keadaan sehat dan bersemangat :)

Mohon pencerahan rekan2 atas masalah saya ttg list box dan menampilkan data yg terhubung dg pilihannya.

Terimakasih atas pencerahan rekan2.

Wassalam,
Mulki akbar

Sun Aug 25, 2013 7:41 pm (PDT) . Posted by:

"Kamto, Tukino"

Dear Be Axcellers,

Mohon bantuannya conditional formating file terlampir, apabila pada kolom
Q4 total nilainya sesuai dengan range pada peringkat nilai A, B, C atau D,
kotak yang berubah warnanya hanya pada kotak tersebut.

Atas bantuannya saya ucapkan terima kasih.

salam
Kino

Sun Aug 25, 2013 8:14 pm (PDT) . Posted by:

"Jan Raisin"

Hai Kino..

formula di e6: =(q4>80)*(q4<=100)
formula di h6; =(q4>=60)*(q4<80)
formula di k6: =(q4>=40)*(q4<60)
formula di o6: =q4<40

maaf lagi gak sempat membuatkan file solusinya.. hasil belum ditest di
excel tapi insya Allah sesuai dengan kasusnya

Salam,

-Miss Jan Raisin-

Pada 26 Agustus 2013 08.58, Kamto, Tukino <tukino.kamto@wwrd.com> menulis:

> **
>
>
> Dear Be Axcellers,
>
> Mohon bantuannya conditional formating file terlampir, apabila pada kolom
> Q4 total nilainya sesuai dengan range pada peringkat nilai A, B, C atau D,
> kotak yang berubah warnanya hanya pada kotak tersebut.
>
> Atas bantuannya saya ucapkan terima kasih.
>
> salam
> Kino
>
>
>

Sun Aug 25, 2013 8:36 pm (PDT) . Posted by:

"Kamto, Tukino"

Miss Jan,

terima kasih atas bantuannya, langsung saya test sudah bisa.

salam
Kino

Pada 26 Agustus 2013 10.13, Jan Raisin <miss.jan.raisin@gmail.com> menulis:

> **
>
>
> Hai Kino..
>
> formula di e6: =(q4>80)*(q4<=100)
> formula di h6; =(q4>=60)*(q4<80)
> formula di k6: =(q4>=40)*(q4<60)
> formula di o6: =q4<40
>
> maaf lagi gak sempat membuatkan file solusinya.. hasil belum ditest di
> excel tapi insya Allah sesuai dengan kasusnya
>
> Salam,
>
>
> -Miss Jan Raisin-
>
>
> Pada 26 Agustus 2013 08.58, Kamto, Tukino <tukino.kamto@wwrd.com> menulis:
>
> **
>>
>>
>> Dear Be Axcellers,
>>
>> Mohon bantuannya conditional formating file terlampir, apabila pada kolom
>> Q4 total nilainya sesuai dengan range pada peringkat nilai A, B, C atau D,
>> kotak yang berubah warnanya hanya pada kotak tersebut.
>>
>> Atas bantuannya saya ucapkan terima kasih.
>>
>> salam
>> Kino
>>
>>
>>
>

Sun Aug 25, 2013 7:53 pm (PDT) . Posted by:

"Jan Raisin"

mr Kid.. izin untuk nge-tes dan modifikasi skripnya ya ^_^
biar ketularan pinternya xixixixi ^_^

Public Sub Ikutan()
Dim rng As Range
Dim lArr(0 To 99999, 0 To 0) As Long, lLoop As Long
Dim dblTime As Double
dblTime = Timer
Set rng = Range("z1:z100000")
For lLoop = 1 To 100000
lArr(lLoop - 1, 0) = lLoop
Next lLoop
rng.Value = lArr
dblTime = Timer - dblTime
MsgBox "Waktu proses : " & dblTime & " detik"
End Sub

skrip yang Jan edit ditandai dengan warna merah dan menghasilkan nilai yang
tepat untuk 100k data

skrip dari mr. Kid ini memberikan pencerahan kepada Jan bahwa:
1. setiap cell pada dasarnya tersusun sebagai array multi dimensi
2. cara menghindari proses transpose array saat akan menulis data ke cel
sehingga bisa menghemat waktu komputasi dan menghindari batasan jumlah data
yang bisa ditranspose.

skrip dari mr Kid adalah yang tercepat dari semua cara yang sudah Jan
coba.. Superb..

terima kasih, untuk pak De Premor yang sudah bersedia mengetes For Each vs
For To.. hasil tesnya memberikan wawasan baru untuk Jan.. biasanya Jan
selalu memilih For Each.. tapi sekarang akan melihat kondisi kasusnya
dulu.. karena ternyata For To lebih cepat dari For Each..

terima kasih untuk pak Hendrik.. dengan adanya thread seperti ini sangat
membantu sekali untuk mengembangkan pengetahuan Be-Exceller.. biasanya
newbie yang bertanya tapi sekarang masternya yang langsung memberikan
kasus.. ^_^

salam,

-Miss Jan Raisin-

Pada 25 Agustus 2013 01.02, hendrik karnadi <hendrikkarnadi@yahoo.com>menulis:

> **
>
>
> 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 'For ... Next tanpa formula
> 1.37 detik <--TES3 'For each ... Next tanpa formula (For each r in Rng)
> 1.34 detik <--TES4 '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
>
>
>
>
>
>
>
>

Sun Aug 25, 2013 8:10 pm (PDT) . Posted by:

"Mr. Kid" nmkid.family@ymail.com

Hehehe...
Sepertinya dah keduluan pak Anton. Cm sayang, blm masuk email saya (tahunya
lihat ke website milis).

Btw,
Untuk option base 0 yg sudah jadi default vba, deklarasi array bisa :
Dim arr(99999,0) as long

Wassalam,
Kid.
On Aug 26, 2013 9:54 AM, "Jan Raisin" <miss.jan.raisin@gmail.com> wrote:

> **
>
>
> mr Kid.. izin untuk nge-tes dan modifikasi skripnya ya ^_^
> biar ketularan pinternya xixixixi ^_^
>
> Public Sub Ikutan()
> Dim rng As Range
> Dim lArr(0 To 99999, 0 To 0) As Long, lLoop As Long
> Dim dblTime As Double
> dblTime = Timer
> Set rng = Range("z1:z100000")
> For lLoop = 1 To 100000
> lArr(lLoop - 1, 0) = lLoop
> Next lLoop
> rng.Value = lArr
> dblTime = Timer - dblTime
> MsgBox "Waktu proses : " & dblTime & " detik"
> End Sub
>
> skrip yang Jan edit ditandai dengan warna merah dan menghasilkan nilai
> yang tepat untuk 100k data
>
> skrip dari mr. Kid ini memberikan pencerahan kepada Jan bahwa:
> 1. setiap cell pada dasarnya tersusun sebagai array multi dimensi
> 2. cara menghindari proses transpose array saat akan menulis data ke cel
> sehingga bisa menghemat waktu komputasi dan menghindari batasan jumlah data
> yang bisa ditranspose.
>
> skrip dari mr Kid adalah yang tercepat dari semua cara yang sudah Jan
> coba.. Superb..
>
> terima kasih, untuk pak De Premor yang sudah bersedia mengetes For Each vs
> For To.. hasil tesnya memberikan wawasan baru untuk Jan.. biasanya Jan
> selalu memilih For Each.. tapi sekarang akan melihat kondisi kasusnya
> dulu.. karena ternyata For To lebih cepat dari For Each..
>
> terima kasih untuk pak Hendrik.. dengan adanya thread seperti ini sangat
> membantu sekali untuk mengembangkan pengetahuan Be-Exceller.. biasanya
> newbie yang bertanya tapi sekarang masternya yang langsung memberikan
> kasus.. ^_^
>
> salam,
>
>
> -Miss Jan Raisin-
>
>
> Pada 25 Agustus 2013 01.02, hendrik karnadi <hendrikkarnadi@yahoo.com>menulis:
>
>> **
>>
>>
>> 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 'For ... Next tanpa formula
>> 1.37 detik <--TES3 'For each ... Next tanpa formula (For each r in Rng)
>> 1.34 detik <--TES4 '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
>>
>>
>>
>>
>>
>>
>>
>
>

Sun Aug 25, 2013 10:58 pm (PDT) . Posted by:

"hendrik karnadi" hendrikkarnadi

Terima kasih juga kpd Alm "Mbak Ctv" yang telah menginspirasi saya untuk mempraktekkan teori Mr Kid mengenai "For..." looping untuk menambah wawasan kita semua.

Salam,
HK

----- Forwarded Message -----
From: Jan Raisin <miss.jan.raisin@gmail.com>
To: belajar-excel@yahoogroups.com
Sent: Sunday, 25 August 2013, 19:53
Subject: Re: [belajar-excel] Tes Looping For ... Next dan For each ... Next


 
mr Kid.. izin untuk nge-tes dan modifikasi skripnya ya ^_^

biar ketularan pinternya xixixixi ^_^

Public Sub Ikutan()
    Dim rng As Range
    Dim lArr(0 To 99999, 0 To 0) As Long, lLoop As Long
    Dim dblTime As Double
    dblTime = Timer
    Set rng = Range("z1:z100000")
    For lLoop = 1 To 100000
         lArr(lLoop - 1, 0) = lLoop
    Next lLoop
    rng.Value = lArr
    dblTime = Timer - dblTime
    MsgBox "Waktu proses : " & dblTime & " detik"
End Sub

skrip yang Jan edit ditandai dengan warna merah dan menghasilkan nilai yang tepat untuk 100k data

skrip dari mr. Kid ini memberikan pencerahan kepada Jan bahwa:
1. setiap cell pada dasarnya tersusun sebagai array multi dimensi
2. cara menghindari proses transpose array saat akan menulis data ke cel sehingga bisa menghemat waktu komputasi dan menghindari batasan jumlah data yang bisa ditranspose.

skrip dari mr Kid adalah yang tercepat dari semua cara yang sudah Jan coba.. Superb..

terima kasih, untuk pak De Premor yang sudah bersedia mengetes For Each vs For To.. hasil tesnya memberikan wawasan baru untuk Jan.. biasanya Jan selalu memilih For Each.. tapi sekarang akan melihat kondisi kasusnya dulu.. karena ternyata For To lebih cepat dari For Each.. 

terima kasih untuk pak Hendrik.. dengan adanya thread seperti ini sangat membantu sekali untuk mengembangkan pengetahuan Be-Exceller.. biasanya newbie yang bertanya tapi sekarang masternya yang langsung memberikan kasus.. ^_^

salam,

-Miss Jan Raisin-

Pada 25 Agustus 2013 01.02, hendrik karnadi <hendrikkarnadi@yahoo.com> menulis:


>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 'For ... Next tanpa formula
>>1.37  detik<--TES3 'For each ... Next tanpa formula (For each r in Rng)
>>1.34  detik<--TES4 '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.Rowatau 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
>>>
>>>
>>
>>
>
>
>

Mon Aug 26, 2013 12:11 am (PDT) . Posted by:

"De Premor" de.premor

Keren Miss Jan hasilnya, berikut hasil dari tes detailnya ditempat saya
setelah loop datanya ditambah sampai 1Jt row, soalnya kalau 100rb aja,
nga ketahuan hasilnya loop nya saja, kecepeten :(

Setelah diubah ke 1jt berikut hasilnya
1. Loop nya saja

2. Loop ditambah Ngisi ke array

3. Loop + Ngisi Array + Ngirim Ke Worksheet

Hasilnya

On 26-08-2013 9:53, Jan Raisin wrote:
> mr Kid.. izin untuk nge-tes dan modifikasi skripnya ya ^_^
> biar ketularan pinternya xixixixi ^_^
>
> Public Sub Ikutan()
> Dim rng As Range
> Dim lArr(0 To 99999, 0 To 0) As Long, lLoop As Long
> Dim dblTime As Double
> dblTime = Timer
> Set rng = Range("z1:z100000")
> For lLoop = 1 To 100000
> lArr(lLoop - 1, 0) = lLoop
> Next lLoop
> rng.Value = lArr
> dblTime = Timer - dblTime
> MsgBox "Waktu proses : " & dblTime & " detik"
> End Sub
>
> skrip yang Jan edit ditandai dengan warna merah dan menghasilkan nilai
> yang tepat untuk 100k data
>
> skrip dari mr. Kid ini memberikan pencerahan kepada Jan bahwa:
> 1. setiap cell pada dasarnya tersusun sebagai array multi dimensi
> 2. cara menghindari proses transpose array saat akan menulis data ke
> cel sehingga bisa menghemat waktu komputasi dan menghindari batasan
> jumlah data yang bisa ditranspose.
>
> skrip dari mr Kid adalah yang tercepat dari semua cara yang sudah Jan
> coba.. Superb..
>
> terima kasih, untuk pak De Premor yang sudah bersedia mengetes For
> Each vs For To.. hasil tesnya memberikan wawasan baru untuk Jan..
> biasanya Jan selalu memilih For Each.. tapi sekarang akan melihat
> kondisi kasusnya dulu.. karena ternyata For To lebih cepat dari For
> Each..
>
> terima kasih untuk pak Hendrik.. dengan adanya thread seperti ini
> sangat membantu sekali untuk mengembangkan pengetahuan Be-Exceller..
> biasanya newbie yang bertanya tapi sekarang masternya yang langsung
> memberikan kasus.. ^_^
>
> salam,
>
>
> -Miss Jan Raisin-
>
>
> Pada 25 Agustus 2013 01.02, hendrik karnadi <hendrikkarnadi@yahoo.com
> <mailto:hendrikkarnadi@yahoo.com>> menulis:
>
> 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 <mailto:mr.nmkid@gmail.com>>
> *To:* BeExcel <belajar-excel@yahoogroups.com
> <mailto: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
> <mailto: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 'For ... Next tanpa formula
> 1.37 detik<--TES3 'For each ... Next tanpa formula (For each
> r in Rng)
> 1.34 detik<--TES4 '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.Rowatau 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
> <mailto:miss.jan.raisin@gmail.com>>
> *To:* belajar-excel@yahoogroups.com
> <mailto: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 <mailto: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
>
>
>
>
>
>
>
>

Sun Aug 25, 2013 11:04 pm (PDT) . Posted by:

"Prodev SIMPLE PB" prodev_simple

Assalamu'alaikum Wr. Wb.

Dear Master & Member yang baik hati...
Mohon pencerahannya nih...memanfaatkan fungsi Lookup dari data dinamis.
Sebelumnya sudah pernah dicontohkan....dikasih solusi...
tapi,
koq masih belum mudheng ya waktu implementasi sendiri :)
Mohon koreksi & solusinya.

Terima kasih.
Wassalamu'alaikum Wr. Wb.

Sun Aug 25, 2013 11:24 pm (PDT) . Posted by:

"Bagus" bagus4bls

Wa'alaykum salam wr.. wb..

Untuk nama siswa no urut 2, yang benar namanya siapa..?
Kenneth Hassan Wood atau Kenneth Hasan Wood. ?

File terlampir.

Wassalam

~ Bagus ~
----- Original Message -----
From: Prodev SIMPLE PB
To: Belajar Excel Milis
Sent: Monday, August 26, 2013 12:05 PM
Subject: [belajar-excel] Memanfaatkan VLOOKUP

Assalamu'alaikum Wr. Wb.

Dear Master & Member yang baik hati...
Mohon pencerahannya nih...memanfaatkan fungsi Lookup dari data dinamis.
Sebelumnya sudah pernah dicontohkan....dikasih solusi...
tapi,
koq masih belum mudheng ya waktu implementasi sendiri :)
Mohon koreksi & solusinya.

Terima kasih.
Wassalamu'alaikum Wr. Wb.

Mon Aug 26, 2013 12:57 am (PDT) . Posted by:

"Prazt" praztmath

assalamu'alaikum....
para master yang terhormat, mohon bantuan untuk memperkecil file excel berikut terlampir (https://www.dropbox.com/s/7hxybeibmn0e7c6/BUKU%20INDUK%20-%20SIAP%20PAKE%20-%20Copy%202013-2014.xlsm), karena besar file ukuranya tidak wajar, sudah saya coba del baris dan kolom yang kosong (seperti yang sudah pernah dibahas di milis ini)tetapi juga belum bisa normal ukurannya..
trims and wassalam...

Mon Aug 26, 2013 1:40 am (PDT) . Posted by:

"hadyan" ihtifayudin

misal dalam 1 cel A1 terdapat kalima "AKU CINTA EXCEL", kemudian saya ingin memindahkan sebagian kata saja "EXCEL" ke cell B1. dengan formula apa yg harus digunakan??

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