Kamis, 11 April 2013

[belajar-excel] Digest Number 2224

15 New Messages

Digest #2224
1b
Re: Cari baris baru dan record tertentu by "Mr. Kid" nmkid.family@ymail.com
1c
Re: Cari baris baru dan record tertentu by "Mr. Kid" nmkid.family@ymail.com
1d
Re: Cari baris baru dan record tertentu by "Mr. Kid" nmkid.family@ymail.com
1f
Re: Cari baris baru dan record tertentu by "Mr. Kid" nmkid.family@ymail.com
1g
1h
Re: Cari baris baru dan record tertentu by "Mr. Kid" nmkid.family@ymail.com
2a
memperoleh jumlah banyaknya buah secara otomatis by "Paulus Taripar" paulustaripar@rocketmail.com
2b
Re: memperoleh jumlah banyaknya buah secara otomatis by "Mr. Kid" nmkid.family@ymail.com
2c
Re: memperoleh jumlah banyaknya buah secara otomatis by "Paulus" paulustaripar@rocketmail.com
3
Absen Guru dan Pegawai by "Podo Prayitno" say_2tkpdp
4
Pivot lagi by "Juwono Radyanto Edi" juwono.re2002

Messages

Wed Apr 10, 2013 9:30 pm (PDT) . Posted by:

"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@gmail.com> 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@gmail.com> 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@yahoo.com>
>>
>>> **
>>>
>>>
>>> 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@gmail.com>
>>> *To:* belajar-excel@yahoogroups.com
>>> *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@yahoo.com>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
>>>
>>>
>>>
>>>
>>
>>
>
>

Wed Apr 10, 2013 9:30 pm (PDT) . Posted by:

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

hehehe.. ada yang kurang huruf r di queryperformancecounter

saya copas lagi deh....

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 QueryPerformanceCounter(udtstart)
Columns("A:A").Find(vbNullString).Select
call QueryPerformanceCounter(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 QueryPerformanceCounter(udtstart)
cells(rows.count,1).end(xlup).offset(1).select
call QueryPerformanceCounter(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

moga-moga gak ada yang error.

Wassalam,
Kid.

2013/4/11 Jan Raisin <miss.jan.raisin@gmail.com>

> **
>
>
> 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@gmail.com> 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@yahoo.com>
>>
>>> **
>>>
>>>
>>> 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@gmail.com>
>>> *To:* belajar-excel@yahoogroups.com
>>> *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@yahoo.com>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
>>>
>>>
>>>
>>>
>>
>
>

Wed Apr 10, 2013 9:34 pm (PDT) . Posted by:

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

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@gmail.com>

> **
>
>
> 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@gmail.com> 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@gmail.com> 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@yahoo.com>
>>>
>>>> **
>>>>
>>>>
>>>> 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@gmail.com>
>>>> *To:* belajar-excel@yahoogroups.com
>>>> *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@yahoo.com>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
>>>>
>>>>
>>>>
>>>>
>>>
>>
>
>

Wed Apr 10, 2013 9:35 pm (PDT) . Posted by:

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

eh... tapi,
(mumpung ada yang nyoba wakakaka)

gimana kalau posisi dibalik,
cara 2 di atas dan cara 1 dibawah
hasilnya seperti apa ya

ty

Wassalam,
Kid.

2013/4/11 Mr. Kid <mr.nmkid@gmail.com>

> 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@gmail.com>
>
>> **
>>
>>
>> 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@gmail.com> 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@gmail.com> 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@yahoo.com>
>>>>
>>>>> **
>>>>>
>>>>>
>>>>> 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@gmail.com>
>>>>> *To:* belajar-excel@yahoogroups.com
>>>>> *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@yahoo.com>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
>>>>>
>>>>>
>>>>>
>>>>>
>>>>
>>>
>>
>>
>
>

Wed Apr 10, 2013 9:44 pm (PDT) . Posted by:

"Jan Raisin"

tetap lebih cepat cara 2 mr. Kid

tapi gini:
cara 1 di atas hasilnya: cara 2 lebih cepat 8x
cara 2 di atas hasilnya: cara 2 lebih cepat 4x

kenapa bisa beda begitu ya? padahal berjalan di mesin yang sama
os : Win7 Ultimate 32-bit
proc : corei5 2,3Ghz
Ram : 2GB
excel: 2K10

mungkin bisa dijelaskan mr.. sekalian tanya gimana cara kok tau harus
memilih script ini:
private declare function QueryPerformanceCounter Lib "kernel32.dll" (ByRef
lpPerformanceCount As LARGE_INTEGER) As Long

Wassalam,

-MJR-

Pada 11 April 2013 11.35, Mr. Kid <mr.nmkid@gmail.com> menulis:

> **
>
>
> eh... tapi,
> (mumpung ada yang nyoba wakakaka)
>
> gimana kalau posisi dibalik,
> cara 2 di atas dan cara 1 dibawah
> hasilnya seperti apa ya
>
> ty
>
> Wassalam,
> Kid
>

Wed Apr 10, 2013 10:11 pm (PDT) . Posted by:

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

kenapa bisa beda begitu ya? padahal berjalan di mesin yang sama
>> bisa jadi, untuk awal kegiatan, akan ada banyak penyesuaian dan
inisialisasi didalam sana. saya ndak tahu persis apa saja yang terjadi.
Anggap saja sebuah pengkondisian.

mungkin bisa dijelaskan mr.. sekalian tanya gimana cara kok tau harus
memilih script ini:
private declare function QueryPerformanceCounter Lib "kernel32.dll" (ByRef
lpPerformanceCount As LARGE_INTEGER) As Long
>> hehehehe... kalo dijawab hafalan pasti ndak terima.
kira-kira gini :
1. waktu itu ada dua sisi, yaitu sisi makro dan sisi mikro.
Sisi makro adalah dari tahun sampai ketepatan 1 detik
Sisi mikro adalah antara 0 dan 1 detik.
Jadi, untuk menghitung waktu proses yang sangat cepat, perlu ketepatan yang
tinggi, yaitu di sisi mikro

2. rentang dari 0 sampai 1 detik itu bisa dipecah menjadi banyak, misal per
milidetik,mikro detik, atau nanodetik, dsb.

3. Biasanya, untuk sisi mikro ini akan dimulai dengan penggunaan timer
seperti :
dim dblTime as double
dbltime=timer
'proses
dbltime=timer-dbltime
debug.print "waktu proses : " & dbltime & " detik"
Coba lihat hasilnya, ada angka didepan koma (detik) dan dibelakang koma
(bisa sampai milidetik)
Yang perlu dipahami adalah lompatan dari satu tik waktu ke tik waktu
berikutnya tidaklah per 1 milidetik, melainkan bisa mencapai 55 milidetik

4. Yang lebih tinggi dari timer adalah GetTickCount, hanya saja kadang kala
lompatan tik ke tik nya bisa 55 milidetik juga walau biasanya 10 milidetik.
Fungsi ini adalah fungsi WinAPI dan silakan cari di internet tentang detil
duduk perkara si GetTickCount ini.

5. Yang lebih tinggi lagi dari GetTickCount adalah yang sampai pada sedekat
mungkin menghitung clock komputer.
Masih ingat bukan bahwa clock komputer seperti 2.3GHz artinya ada 2.3G tik
per detik.
Jadi, jika bisa mendapatkan nilai waktu dari satu tik ke tik berikutnya
yang sangat rapat, maka pastilah harus yang mendekati frekuensi clock
komputer tadi.
Fungsi QueryPerformanceCounter adalah yang paling mendekatinya, karena bisa
sampai mencatat 1.000.000.000 tik per detiknya.

5. Jadi, dengan bekal keinginan untuk tahu cara membaca tik komputer
setepat mungkin, maka akan bertemulah dengan fungsi QueryPerformanceCounter

6. Fungsi QueryPerformanceCounter punya teman namanya
QueryPerformanceFrequency
Karena ada Frequency nya, berarti yang dihitung bukan tik nya tapi
frekuensi per detik.
Jika diterapkan pada kasus tadi, maka yang didapat adalah nilai frekuensi
nya.
Nah kalau counternya 1000000000 tik per detik, maka kalau cara 1 diproses
sebanyak 1000 tik, maka frekuensinya 1000/1000000000
hehehe bakal ruwet bacanya kali ya....

kira-kira demikianlah...

Wassalam,
Kid.

2013/4/11 Jan Raisin <miss.jan.raisin@gmail.com>

> **
>
>
> tetap lebih cepat cara 2 mr. Kid
>
> tapi gini:
> cara 1 di atas hasilnya: cara 2 lebih cepat 8x
> cara 2 di atas hasilnya: cara 2 lebih cepat 4x
>
> kenapa bisa beda begitu ya? padahal berjalan di mesin yang sama
> os : Win7 Ultimate 32-bit
> proc : corei5 2,3Ghz
> Ram : 2GB
> excel: 2K10
>
> mungkin bisa dijelaskan mr.. sekalian tanya gimana cara kok tau harus
> memilih script ini:
> private declare function QueryPerformanceCounter Lib "kernel32.dll" (ByRef
> lpPerformanceCount As LARGE_INTEGER) As Long
>
> Wassalam,
>
> -MJR-
>
>
>
> Pada 11 April 2013 11.35, Mr. Kid <mr.nmkid@gmail.com> menulis:
>
> **
>>
>>
>> eh... tapi,
>> (mumpung ada yang nyoba wakakaka)
>>
>> gimana kalau posisi dibalik,
>> cara 2 di atas dan cara 1 dibawah
>> hasilnya seperti apa ya
>>
>> ty
>>
>> Wassalam,
>> Kid
>>
>
>

Wed Apr 10, 2013 10:14 pm (PDT) . Posted by:

"summonery" summonery

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 belajar-excel@yahoogroups.com, "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:* belajar-excel@yahoogroups.com
> >>>> *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
> >>>>
> >>>>
> >>>>
> >>>>
> >>>
> >>
> >
> >
>

Wed Apr 10, 2013 10:21 pm (PDT) . Posted by:

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

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 <summonery@yahoo.com>

> **
>
>
> 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 belajar-excel@yahoogroups.com, "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:* belajar-excel@yahoogroups.com
> > >>>> *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
> > >>>>
> > >>>>
> > >>>>
> > >>>>
> > >>>
> > >>
> > >
> > >
> >
>
>
>

Wed Apr 10, 2013 11:06 pm (PDT) . Posted by:

"Jan Raisin"

penjelasannya mantap mr..

ternyata dari 1 kasusnya pak hendrik, kalo dijabarkan bisa sampai segitu
banyak ilmu yang didapat..

syukron atas ilmunya.. semoga menjadi berkah untuk semua. Aamiin..

Wassalam,

-MJR-

Pada 11 April 2013 12.11, Mr. Kid <mr.nmkid@gmail.com> menulis:

> **
>
>
> kenapa bisa beda begitu ya? padahal berjalan di mesin yang sama
> >> bisa jadi, untuk awal kegiatan, akan ada banyak penyesuaian dan
> inisialisasi didalam sana. saya ndak tahu persis apa saja yang terjadi.
> Anggap saja sebuah pengkondisian.
>
>
> mungkin bisa dijelaskan mr.. sekalian tanya gimana cara kok tau harus
> memilih script ini:
> private declare function QueryPerformanceCounter Lib "kernel32.dll" (ByRef
> lpPerformanceCount As LARGE_INTEGER) As Long
> >> hehehehe... kalo dijawab hafalan pasti ndak terima.
> kira-kira gini :
> 1. waktu itu ada dua sisi, yaitu sisi makro dan sisi mikro.
> Sisi makro adalah dari tahun sampai ketepatan 1 detik
> Sisi mikro adalah antara 0 dan 1 detik.
> Jadi, untuk menghitung waktu proses yang sangat cepat, perlu ketepatan
> yang tinggi, yaitu di sisi mikro
>
> 2. rentang dari 0 sampai 1 detik itu bisa dipecah menjadi banyak, misal
> per milidetik,mikro detik, atau nanodetik, dsb.
>
> 3. Biasanya, untuk sisi mikro ini akan dimulai dengan penggunaan timer
> seperti :
> dim dblTime as double
> dbltime=timer
> 'proses
> dbltime=timer-dbltime
> debug.print "waktu proses : " & dbltime & " detik"
> Coba lihat hasilnya, ada angka didepan koma (detik) dan dibelakang koma
> (bisa sampai milidetik)
> Yang perlu dipahami adalah lompatan dari satu tik waktu ke tik waktu
> berikutnya tidaklah per 1 milidetik, melainkan bisa mencapai 55 milidetik
>
> 4. Yang lebih tinggi dari timer adalah GetTickCount, hanya saja kadang
> kala lompatan tik ke tik nya bisa 55 milidetik juga walau biasanya 10
> milidetik. Fungsi ini adalah fungsi WinAPI dan silakan cari di internet
> tentang detil duduk perkara si GetTickCount ini.
>
> 5. Yang lebih tinggi lagi dari GetTickCount adalah yang sampai pada
> sedekat mungkin menghitung clock komputer.
> Masih ingat bukan bahwa clock komputer seperti 2.3GHz artinya ada 2.3G tik
> per detik.
> Jadi, jika bisa mendapatkan nilai waktu dari satu tik ke tik berikutnya
> yang sangat rapat, maka pastilah harus yang mendekati frekuensi clock
> komputer tadi.
> Fungsi QueryPerformanceCounter adalah yang paling mendekatinya, karena
> bisa sampai mencatat 1.000.000.000 tik per detiknya.
>
> 5. Jadi, dengan bekal keinginan untuk tahu cara membaca tik komputer
> setepat mungkin, maka akan bertemulah dengan fungsi
> QueryPerformanceCounter
>
> 6. Fungsi QueryPerformanceCounter punya teman namanya
> QueryPerformanceFrequency
> Karena ada Frequency nya, berarti yang dihitung bukan tik nya tapi
> frekuensi per detik.
> Jika diterapkan pada kasus tadi, maka yang didapat adalah nilai frekuensi
> nya.
> Nah kalau counternya 1000000000 tik per detik, maka kalau cara 1 diproses
> sebanyak 1000 tik, maka frekuensinya 1000/1000000000
> hehehe bakal ruwet bacanya kali ya....
>
> kira-kira demikianlah...
>
> Wassalam,
> Kid.
>
>
>
> 2013/4/11 Jan Raisin <miss.jan.raisin@gmail.com>
>
>> **
>>
>>
>> tetap lebih cepat cara 2 mr. Kid
>>
>> tapi gini:
>> cara 1 di atas hasilnya: cara 2 lebih cepat 8x
>> cara 2 di atas hasilnya: cara 2 lebih cepat 4x
>>
>> kenapa bisa beda begitu ya? padahal berjalan di mesin yang sama
>> os : Win7 Ultimate 32-bit
>> proc : corei5 2,3Ghz
>> Ram : 2GB
>> excel: 2K10
>>
>> mungkin bisa dijelaskan mr.. sekalian tanya gimana cara kok tau harus
>> memilih script ini:
>> private declare function QueryPerformanceCounter Lib "kernel32.dll"
>> (ByRef lpPerformanceCount As LARGE_INTEGER) As Long
>>
>> Wassalam,
>>
>> -MJR-
>>
>>
>>
>> Pada 11 April 2013 11.35, Mr. Kid <mr.nmkid@gmail.com> menulis:
>>
>> **
>>>
>>>
>>> eh... tapi,
>>> (mumpung ada yang nyoba wakakaka)
>>>
>>> gimana kalau posisi dibalik,
>>> cara 2 di atas dan cara 1 dibawah
>>> hasilnya seperti apa ya
>>>
>>> ty
>>>
>>> Wassalam,
>>> Kid
>>>
>>
>
>

Wed Apr 10, 2013 11:17 pm (PDT) . Posted by:

"Jan Raisin"

ini adalah hasil percobaan dengan keempat script

script 1 dari pak hendrik
script 2 dari mr kid
script 3 & 4 dari pak Anton

hasilnya sbb:

cara 1 : Columns("A:A").Find(vbNullString).Select Alamat akhir : $A$4
Waktu : 0 | 4877
cara 2 : cells(rows.count,1).end(xlup).offset(1).select Alamat akhir : $A$4
Waktu : 0 | 1435
cara 3 : Columns(1).Find(").Select Alamat akhir : $A$4 Waktu
: 0 | 2371
cara 4 : Cells(Rows.Count, 1).End(3).Offset(1).Select Alamat akhir : $A$4
Waktu : 0 | 589

ternyata yang paling cepat adalah script nomor 4 dari pak Anton,
padahal scriptnta mirip dengan script nomor 2 dari mr kid tapi perbedaan
waktunya bisa hampir sepertiganya sendiri.

Bisa tolong dijelaskan oleh pak Anton atau mr Kid?

Wassalam,

-MJR-

Wed Apr 10, 2013 10:14 pm (PDT) . Posted by:

"Paulus Taripar" paulustaripar@rocketmail.com

halo mas/mbak..saya mau tanya cara memperoleh jumlah banyaknya buah secara otomatis bagaimana?

Rincian masalah seperti ini.,ketika di kolom "DATA BUAH" kita dapat memilih "PEMBELI" dan "NAMA BUAH" setelah itu "BANYAKNYA&quot; dapat berubah bersamaan pada saat memilih "PEMBELI" dan "NAMA BUAH". Lalu bagaimana caranya ya? Terima kasih.

Wed Apr 10, 2013 10:25 pm (PDT) . Posted by:

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

hehehe... ternyata kasusnya adalah countif multi kriteria (xl2007 ke atas
pakai COuntIFs)

di Nabble, sudah dicoba menerjemahkan kasus sebagai kegiatan input yang
nama buah dan jumlahnya bisa dipilih berdasar jumlah tulisan nama buah di
data.
http://milis-belajar-excel.1048464.n5.nabble.com/menggabungkan-data-validation-dengan-fungsi-quot-COUNTIF-quot-td5717265.html

Untuk kasus ini : H5
xl2007 keatas bisa dengan :
=COUNTIFS($B$4:$B$15,G5,$A$4:$A$15,F5)

semua versi :
=SumProduct( ($B$4:$B$15=G5) * ($A$4:$A$15=F5) )

Wassalam,
Kid.

2013/4/11 Paulus Taripar <paulustaripar@rocketmail.com>

> **
>
>
> halo mas/mbak..saya mau tanya cara memperoleh jumlah banyaknya buah secara
> otomatis bagaimana?
>
> Rincian masalah seperti ini.,ketika di kolom "DATA BUAH" kita dapat
> memilih "PEMBELI" dan "NAMA BUAH" setelah itu "BANYAKNYA&quot; dapat berubah
> bersamaan pada saat memilih "PEMBELI" dan "NAMA BUAH". Lalu bagaimana
> caranya ya? Terima kasih.
>
>
>

Thu Apr 11, 2013 12:04 am (PDT) . Posted by:

"Paulus" paulustaripar@rocketmail.com

mas, saya mau tanya lagi bisa gak kita ambil "Data Validation" dari
sheet yg berbeda?! saya coba isi "SOURCE" dengan =sheet2!$...$... trus
muncul peringatan error gitu. Bisa gak mas kalo "Data Validation"
diinput dari sheet yg berbeda? Terima kasih, mas.

--- Mods ---
Mohon email text sebelum quoted text ya...
Supaya bisa langsung dibaca tanpa perlu scroll.
------------

--- In belajar-excel@yahoogroups.com, "Mr. Kid" <mr.nmkid@...> wrote:
>
> hehehe... ternyata kasusnya adalah countif multi kriteria (xl2007 ke
atas
> pakai COuntIFs)
>
> di Nabble, sudah dicoba menerjemahkan kasus sebagai kegiatan input
yang
> nama buah dan jumlahnya bisa dipilih berdasar jumlah tulisan nama buah
di
> data.
>
http://milis-belajar-excel.1048464.n5.nabble.com/menggabungkan-data-vali&#92;
dation-dengan-fungsi-quot-COUNTIF-quot-td5717265.html

>
> Untuk kasus ini : H5
> xl2007 keatas bisa dengan :
> =COUNTIFS($B$4:$B$15,G5,$A$4:$A$15,F5)
>
> semua versi :
> =SumProduct( ($B$4:$B$15=G5) * ($A$4:$A$15=F5) )
>
> Wassalam,
> Kid.
>
>
>
> 2013/4/11 Paulus Taripar paulustaripar@...
>
> > **
> >
> >
> > halo mas/mbak..saya mau tanya cara memperoleh jumlah banyaknya buah
secara
> > otomatis bagaimana?
> >
> > Rincian masalah seperti ini.,ketika di kolom "DATA BUAH" kita dapat
> > memilih "PEMBELI" dan "NAMA BUAH" setelah itu "BANYAKNYA&quot; dapat
berubah
> > bersamaan pada saat memilih "PEMBELI" dan "NAMA BUAH". Lalu
bagaimana
> > caranya ya? Terima kasih.
> >
> >
> >
>terima kasih mas.,

Wed Apr 10, 2013 11:03 pm (PDT) . Posted by:

"Podo Prayitno" say_2tkpdp

Mohon penjelasan dan solusinya dari file excel saya yang mau saya gunakan untuk Absen Guru dan Pegawai di Instansi kami, file yang saya lampirkan baru setengah jadi karena untuk otak-atik makro masih bingung, untuk masalah dan harapan terlampir berkas excel. Semoga Ada Yang Bisa Membantu

Wed Apr 10, 2013 11:57 pm (PDT) . Posted by:

"Juwono Radyanto Edi" juwono.re2002

Dear all,

Setelah ngubek-ubek milis ini tapi tetap saja tidak nemu (tidak bisa kali..) maka mohon bantuannya atas problem saya di lampiran ini.
Atau kalau sudah pernah ada problem yang seperti ini mohon kiranya di lampirkan link nya

Terima kasih
Juwono RE
GROUP FOOTER MESSAGE
---------------------------------------------------------------------
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