makro seperti itu hanya untuk menjawab benar jika data *sudah sorted.*
Kalau data masih unsorted; misal:
*data1
data2
data2
data1
data3
data1*
maka hasilnya tidak sesuai keinginan; data1 yg sudah disela oleh data lain
dianggap data baru dan mendapat nomor mulai dari 1 lagi.
Masalah seperti ini sebenarnya dapat diselesaikan dengan formula sederhana;
tidak perlu makro
misal data ada di A1:A10, tulis di B1
*=COUNTIF($A$1:A1,A1)*
lalu dicopy cells di bawahnya
Perhatikan Range *$A$1:A1 *jika dicopy di A10 akan menghasilkan
range *A$!:A10,* artinya range yg di-countif adalah dinamis, mengikuti
letak ditulisnya.
Hasilnya dapat anda lihat di sheet dlm workbook lampiran,
Tetapi jika tetap 'ngebet' dengan makro, siti mengajukan 3 contoh
salah satunya (yg tercepat waktunya) seperti di bawah ini; 2 lainnya
dapat dilihat langsung di lampiran
Sub NomorDataAkumulasi_B()
'-----------------------------------------------------
' ctv | 5 aug 2009 | memberi nomor pada Unsorted data
' manfaatkan WorksheetFunction, loop 1 tingkat
' * terjadi loop hanya N kali
'-----------------------------------------------------
Dim i As Long ' pencacah kalang (loop)
Dim N As Long ' penampung hasil Countif
Dim DataRng As Range ' data range
Dim DynaRng As Range ' sliding / dynamic range
' Setting dimensi Range yg akan diolah
'* (terserah Anda mau pilih cara apa)*
' Memberi Nomor untuk tiap data
For i = 1 To DataRng.Rows.Count
Set DynaRng = DataRng(1, 1).Resize(i, 1)
N = WorksheetFunction.CountIf(DynaRng, DataRng(i, 1))
DataRng(i, 3) = N
Next i
End Sub
On Sat, Sep 5, 2009 at 3:14 PM, siti Vi <[email protected]> wrote:
> Jadi, si penjawab juga harus membuatkan workbook dan contoh data nya, (?)
> he he he..
>
> Sub NomorData()
> Dim i As Long, n As Long
> Dim dRange As Range
> Dim d As Variant
>
> Set dRange = Application.InputBox( _
> "Tunjukkan padaku Cell DataPertama :", _
> "NomorUrut Data", Selection.Address,Type:=8)
> Set dRange = Range(dRange, dRange.End(xlDown))
>
> For i = 1 To dRange.Rows.Count
> d = dRange(i, 1)
> If d <> dRange(i - 1, 1) Then n = 0
> n = n + 1
> dRange(i, 0) = n
> Next i
> End Sub
>
>
> 2009/9/4 easy goin <[email protected]>
> > dear Master Excel,
> > mohon bantuannya untuk autofill (no urut) dengan kriteria (menggunakan
> VB), seperti contoh terlampir
> > 1 data1
> > 2 data1
> > 3 data1
> > 1 data2 >> Jika datanya beda, autofillnya dimulai dengan angka satu
> lagi...??
> > 2 data2
> > 3 data2
> > 4 data2
> > 5 data2
> > 6 data2
> > dst......
>