Setuju dengan Mr. Kid,
O iya, bisa dicoba bagaimana hasilnya pada last rownya kecil vs last
rownya besar,,Misal performa script pada data dengan jumlah row=5
dibandingkan performa script pada data dengan row=1000000
Nambahin scriptnya ah,, 2
saja:Columns(1).Find("").SelectCells(Rows.Count,
1).End(3).Offset(1).Select>semoga bermanfaat --- In [email protected], "Mr. Kid" <mr.nmkid@...> wrote: > > oh sudah bisa.... > > hehehe... > > ternyata, script yang cepat itu bukan yang paling pendek, tapi yang paling > efisien memilih fungsi dan alur prosesnya. > Jadi, proses berisi 1 fungsi yang dikerjakan 1000 count kalah cepat dengan > proses yang sama yang dikerjakan dengan 20 fungsi yang masing-masing fungsi > hanya butuh 20 count > > Wassalam, > Kid. > > > > > 2013/4/11 Jan Raisin miss.jan.raisin@... > > > ** > > > > > > mr Kid, > > > > gak jadi xixixix :D > > skripnya udah bisa jalan > > > > cara kedua lebih cepat 8x dibandingkan cara pertama > > > > Wassalam, > > > > -MJR- > > > > > > Pada 11 April 2013 11.26, Jan Raisin miss.jan.raisin@... menulis: > > > > mr Kid, > >> > >> waktu scriptnya Jan jalankan, muncul error seperti ini > >> [image: Gambar sisip 2] > >> > >> apa yang salah dengan excel Jan ? > >> > >> Wassalam, > >> > >> -MJR- > >> > >> > >> Pada 11 April 2013 11.19, Mr. Kid mr.nmkid@... menulis: > >> > >> ** > >>> > >>> > >>> Bagaimana kalau dicoba pada penerapannya dan dihitung waktunya. Dari > >>> sekian banyak cara yang ada di atas sana tadi, mana yang lebih pas dan > >>> lebih sesuai untuk kondisi dalam contoh penerapan tadi. > >>> > >>> misal > >>> Cara 1 : Columns("A:A").Find(vbNullString).Select > >>> Cara 2 : cells(rows.count,1).end(xlup).offset(1).select > >>> > >>> buat workbook baru dan isi sheet1 dengan beberapa data di kolom A, B, > >>> maupun C ( banyak baris x 3 kolom) > >>> ke VBE (ALT F11) -> menu Insert -> Module -> copasken : > >>> > >>> private declare function QueryPerformanceCounter Lib "kernel32.dll" > >>> (ByRef lpPerformanceCount As LARGE_INTEGER) As Long > >>> private type LARGE_INTEGER > >>> lowpart as long > >>> highpart as long > >>> end type > >>> > >>> public sub TesBarisBaru() > >>> dim udtStart as large_integer, udtEnd as large_integer > >>> > >>> 'cara 1 > >>> call QueryPerformanceCounte(udtstart) > >>> Columns("A:A").Find(vbNullString).Select > >>> call QueryPerformanceCounte(udtend) > >>> debug.print "cara 1 : Columns(""A:A"").Find(vbNullString).Select", > >>> _ > >>> "Alamat akhir : " & selection.address, _ > >>> "Waktu : " & > >>> udtend.highpart-udtstart.highpart & " | " & udtend.lowpart-udtstart.lowpart > >>> > >>> 'cara 2 > >>> call QueryPerformanceCounte(udtstart) > >>> cells(rows.count,1).end(xlup).offset(1).select > >>> call QueryPerformanceCounte(udtend) > >>> debug.print "cara 2 : > >>> cells(rows.count,1).end(xlup).offset(1).select", _ > >>> "Alamat akhir : " & selection.address, _ > >>> "Waktu : " & > >>> udtend.highpart-udtstart.highpart & " | " & udtend.lowpart-udtstart.lowpart > >>> > >>> end sub > >>> > >>> > >>> Wassalam, > >>> Kid. > >>> > >>> > >>> > >>> > >>> 2013/4/10 hendrik karnadi hendrikkarnadi@... > >>> > >>>> ** > >>>> > >>>> > >>>> Terima kasih Miss Jan atas koreksinya. > >>>> > >>>> Dengan asumsi Nama terisi penuh (tidak kosong di tengah) maka saya coba > >>>> revisi seperti ini, > >>>> > >>>> Untuk mencari baris baru > >>>> Sub BarBar() > >>>> Columns("A:A").Find(vbNullString).Select > >>>> End Sub > >>>> Yang ini kayaknya cukup pendek, mustinya sdh OK > >>>> > >>>> Untuk mencari Nama tertentu (lengkap, tidak masalah huruf besar kecil) > >>>> Sub RekTtt() > >>>> On Error GoTo Pesan > >>>> skunci = InputBox("Masukkan Nama") > >>>> If skunci <> vbNullString Then Columns("A:A").Find(skunci, > >>>> Lookat:=xlWhole).Activate > >>>> Exit Sub > >>>> Pesan: > >>>> MsgBox "Nama tidak ada", vbInformation, "PESAN" > >>>> End Sub > >>>> Yang ini terpaksa agak panjang supaya logikanya nyambung. > >>>> > >>>> Khusus yang kedua, ada kode yang bisa lebih pendek Miss Jan ? > >>>> > >>>> Salam, > >>>> HK > >>>> > >>>> > >>>> ------------------------------ > >>>> *From:* Jan Raisin miss.jan.raisin@... > >>>> *To:* [email protected] > >>>> *Sent:* Wednesday, 10 April 2013, 14:26 > >>>> *Subject:* Re: [belajar-excel] Cari baris baru dan record tertentu > >>>> > >>>> > >>>> pak Hendrik, > >>>> > >>>> untuk script yang ini: > >>>> Sub BarBar() > >>>> Columns("A:A").SpecialCells(xlLastCell).Offset(1, 0).Select > >>>> End Sub > >>>> > >>>> coba lakukan tes seperti ini pada workbook yang baru: > >>>> 1. Buat header di cell A1 > >>>> 2. input data manual di cell A2 sampai A20 (sembarang data) > >>>> 3. hapus data mulai cell A2 sampai A20 > >>>> 4. jalankan script tadi dan lihat hasilnya > >>>> > >>>> Lalu untuk script yang ini: > >>>> Sub RekTtt() > >>>> Columns("A:A").Find("Sania").Activate > >>>> End Sub > >>>> > >>>> bagaimana jika ternyata tidak ada cell yang berisi kata Sania ? > >>>> > >>>> IMHO, > >>>> > >>>> >> proses select atau activate sebisa mungkin dihindari, karena bisa > >>>> dimanfaatkan untuk proses yang lain > >>>> >> pencarian posisi dengan menggunakan SpecialCell untuk input data > >>>> yang baru kadang menghasilkan data yang tidak tepat. > >>>> >> posisi pencarian record sebaiknya dimasukkan ke dalam variabel > >>>> bertipe range, lalu dilakukan kros cek apakah record tersebut ada atau tidak > >>>> > >>>> ini hanya pendapat pribadi Jan yang masih banyak kekurangannya. jika > >>>> ada yang salah tolong dikoreksi. > >>>> > >>>> Salam, > >>>> > >>>> -Miss Jan Raisin- > >>>> > >>>> > >>>> > >>>> Pada 10 April 2013 13.30, hendrik karnadi [email protected]: > >>>> > >>>> ** > >>>> > >>>> Rekan Be-Exceler, > >>>> > >>>> Dalam database kita sering dihadapkan pada dua hal, yaitu: > >>>> - Mencari baris baru untuk input data baru > >>>> - Mencari record tertentu dari data yang sudah ada, mis. untuk diedit > >>>> > >>>> Biasanya/sering kita gunakan Offset(Tabel.Rows.Count+1,.....) atau > >>>> .......End(xlUp) untuk mencari baris baru dan Find("xyz", Lookin=xlValues) > >>>> untuk mencari record tertentu yang sudah ada. > >>>> > >>>> Untuk mencari baris baru saya gunakan code: > >>>> Sub BarBar() > >>>> Columns("A:A").SpecialCells(xlLastCell).Offset(1, 0).Select > >>>> End Sub > >>>> > >>>> Untuk mencari record tertentu (mis "Sania") saya gunakan code: > >>>> Sub RekTtt() > >>>> Columns("A:A").Find("Sania").Activate > >>>> End Sub > >>>> > >>>> File terlampir. > >>>> > >>>> Pertanyaannya: > >>>> Apakah kedua code tsb mengandung kelemahan? > >>>> > >>>> Salam, > >>>> HK > >>>> > >>>> > >>>> > >>>> > >>> > >> > > > > >

