yup... perlu diuji untuk perbedaan jumlah record juga. Kalau perlu juga cara 3 pakai script Pak Anton yang Find dan cara 4 pakai script End(3) Atau disummary dalam 1 sheet aja kali ya semuanya (tinggal ganti script bagian debug.print kan ya)
(hehehe... bener-bener merepotkan miss Jan dah nih... itung-itung amal ya miss) Wassalam, Kid. 2013/4/11 summonery <[email protected]> > ** > > > 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("").Select > Cells(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 hendrikkarnadi@ > ...menulis: > > >>>> > > >>>> ** > > > >>>> > > >>>> 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 > > >>>> > > >>>> > > >>>> > > >>>> > > >>> > > >> > > > > > > > > > > >

