--- Mods ---
File lampiran lebih dari 250KB dilepas dari email. Silakan pemosting melakukan 
posting file lampiran yang diusahakan maksimal 250KB dengan cara me-reply email 
ini.
---------------

terima kasih mr kid...
 saya sudah berhasil memodif formula yg menurut saya ini yg paling sesuai 
makronya... waktu yg dibutuhkan untuk meremove data kembar dan menyisakan data 
paling baru dalam ribuan data cuman 3dtk kurang lebihnya...

 makro saya seperti ini.. bilamana ada yg janggal menurut mr kid.. mohon 
bantuan dan bimbingannya untuk perbaikan dari rumus ini.. karena saya cuman 
bermodal coba2 modif sendiri...

 

 Sub CommandButton2_Click()
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Columns("I:I").EntireColumn.Hidden = False

r = Sheets("DATA PENJUALAN").Range("I1").CurrentRegion.Rows.Count - 1
    Sheets("DATA PENJUALAN").Range("I1").Select
    For i = Cells(9, 9) To r
        ActiveCell = i
        ActiveCell.Offset(1, 0).Select
    Next i
Range("I1").FormulaR1C1 = "No"

Columns("A:I").Select
    ActiveWorkbook.Worksheets("DATA PENJUALAN").Sort.SortFields.CLEAR
    ActiveWorkbook.Worksheets("DATA PENJUALAN").Sort.SortFields.Add Key:=Range( 
_
        "I:I"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _
        xlSortNormal
    With ActiveWorkbook.Worksheets("DATA PENJUALAN").Sort
        .SetRange Range("A:I")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    ActiveSheet.Range("A:I").RemoveDuplicates Columns:=Array(3, 4), _
        Header:=xlYes
    ActiveWorkbook.Worksheets("DATA PENJUALAN").Sort.SortFields.CLEAR
    ActiveWorkbook.Worksheets("DATA PENJUALAN").Sort.SortFields.Add Key:=Range( 
_
        "I:I"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    With ActiveWorkbook.Worksheets("DATA PENJUALAN").Sort
        .SetRange Range("A:I")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With

Range("I:I").ClearContents
Range("I1").FormulaR1C1 = "No"
Columns("A:H").Select
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlInsideVertical)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlInsideHorizontal)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
Columns("I:I").EntireColumn.Hidden = True
End Sub



 
 
 


 Pada Jumat, 21 Agustus 2015 1:50, "'Mr. Kid' [email protected] 
[belajar-excel]" menulis:
 
 

   
 Untuk menulis nomor baris dengan baris kode :

'misal pada nomor baris diletakkan di K11:K19 (ada 9) baris, nomor mulai dari 1

sheets("nama sheet target").range("k11:k19").value=evaluate("=Row(1:9)")


Andai menggunakan fitur Excel Table, maka penulisan nomor baris tidak 
diperlukan.

Contoh ada tabel data dengan kolom dari A sampai D, header di baris 1 (range 
A1:D1), data mulai A2.

Di kolom E diberi header (range E1) NomorBaris. Dengan cell E2 berisi formula 
=Row()-1

Langkah pertama (cukup dijalankan sekali saja) adalah membuat object Excel 
table. Caranya blok A1 sampai kolom E baris terakhir data (kolom berformula 
nomor baris ikut terblok). Kemudian ribbon Home -> group Styles -> format as 
table -> pilih salah satu styles yang ada.


Setiap kali ada data baru, paste-kan dibaris kosong pertama (tidak boleh ada 
baris kosong antar data). Pastikan data yang dipaste hanya berisi 4 kolom 
karena header kolom pokok ada di A sampai D dan kolom E adalah tambahan.

 Kemudian langkah remove duplicate nya adalah :

 1. sort kolom E secara descending (largest to smallest)

 2. lakukan remove duplicate (centang kolom yang menjadi kunci unique records, 
dan pastikan kolom E tidak dicentang)

 3. jika muncul kotak pesan bahwa tidak ada data yang di-remove atau tidak ada 
yang duplicate, maka lakukan sort lagi secara descending. Tapi jika kotak pesan 
yang muncul menunjukkan ada sekian record yang di remove, maka tidak perlu sort 
lagi.


 Jika ternyata kolom data yang dipaste bisa berubah-ubah jumlahnya, maka 
dibalik posisinya.

 Kolom A berisi formula =Row()-1, dan data pokok dipaste mulai kolom B.


 Wassalam,

 Kid



 
 




 
 











 
 2015-08-18 10:14 GMT+07:00 Ivansl [email protected] 
mailto:[email protected] [belajar-excel] <[email protected] 
mailto:[email protected]>:
   
 Terima kasih atas sarannya mr kid... Sudah saya ikutin langkah2nya.. Dan sudah 
saya record ke dalam bentuk makro.. Cuman muncul satu permasalahan lg.. 
Bagaimana supaya no urut baris tiap kali ada data record terbaru otomatis no 
urut terisi dengan sendirinya?  Apa harus manual terus untuk pengisian nomer 
urut baris??



 
On 18 Agt 2015, at 05.10, 'Mr. Kid' [email protected] 
mailto:[email protected] [belajar-excel] <[email protected] 
mailto:[email protected]> wrote:


   
 Hai Layonardo,


 Fitur remove duplicate selalu membuang record yang lebih bawah. Jadi, ketika 
bisa membuat urutan record menjadi terbalik sesaat saja, maka fitur ini bisa 
digunakan.


Biasanya data histori memiliki kolom last update berisi tanggal dan waktu si 
record ditulis ke dalam tabel. Fitur remove duplicate bisa digunakan dengan 
didahului proses pengurutan data secara menurun (descending) berdasar kolom 
last update ini. Kemudian mengembalikan lagi urutannya menjadi menaik 
(ascending) berdasar kolom last update, jika dituntut bahwa unique records yang 
masuk ke dalam tabel yang terbaru tetap di baris yang bawah.
 

 Andaikan tabel tidak memiliki kolom berisi tanggal dan waktu last update, maka 
diperlukan pembuatan kolom baru di kanan tabel data (rapat dengan kolom 
terakhir data) yang diisi dengan nomor baris record (bisa mulai dari 1 ataupun 
dari angka berapa saja asal berurut). Langkahnya begini :
1. Misal diberi header bernama Baris. 
2. Lalu di record ke-1 diisi angka 1, dan record ke-2 diisi angka 2. 

 3. blok angka 1 dan 2 yang di-input di no 2 -> gerakkan mouse ke pojok kanan 
bawah sampai icon berubah menjadi + hitam padat -> double click mouse -> 
periksa bahwa seluruh record sudah memiliki nomor urut.

 4. Blok seluruh tabel (header, semua kolom termasuk kolom baru ini, seluruh 
baris) 
5. sort berdasar kolom baru bernama Baris secara Descending

 6. lakukan remove duplicate berdasar kolom-kolom kunci (pastikan kolom Baris 
bukan menjadi kunci dalam remove duplicate)

 7. sort lagi berdasar kolom baru bernama Baris secara Ascending.


 Proses diatas bisa 

 

 Wassalam,

 Kid

 




 
 2015-08-17 23:40 GMT+07:00 [email protected] mailto:[email protected] 
[belajar-excel] <[email protected] 
mailto:[email protected]>:
   
 dear all master... mohon bantuan untuk rumus makronya...
langsung ke topiknya.. saya pingin menghapus data kembar.dan menyisakan data yg 
paling baru...
sebenarnya cara paling cepat adalah pakai remove duplikat dari bawaan excel 
sendiri cuman sayangnya... data yg dihapus malah yg terbaru... dan menyisakan 
data yg lama saja... nah yg saya inginkan justru sebaliknya...

data saya lampirkan.. bisa langsung di cek ke bagian sheet "data penjualan".. 
disana saya siapkan 1 tombol hapus dan saya ingin hasilnya seperti di sheet 
"contoh hasil tombol hapus" mohon bantuannya... semoga paham maksud saya...

saya ada nemu rumus makro ini cuman bilamana datanya mencapai 5000an or lebih 
dari itu.. prosesnya memakan waktu yg cukup lama sekitar 2-3 menit.. yg mana 
menurut saya cukup lama... sebaliknya rumus bawaan excelnya(remove duplikat) 
malah lebih cepat... bahkan ga sampe 30 dtk...

Sub hapus()

Dim brs As Long

Dim i As Long

Dim j As Long

Dim ROW_DELETED As Boolean

brs = WorksheetFunction.CountA(ActiveSheet.Range("A:A")) - 1

Application.ScreenUpdating = False

For x = 1 To brs

ActiveSheet.Range("Q" x + 1).Value = ActiveSheet.Range("C" x + 1).Value 
ActiveSheet.Range("D" x + 1).Value

Next x

i = 2

Do While i <= ActiveSheet.UsedRange.Rows.Count

    ROW_DELETED = False

    For j = i + 1 To ActiveSheet.UsedRange.Rows.Count

        If Cells(i, 17) = Cells(j, 17) Then

            Rows(i).Delete

            ROW_DELETED = True

            Exit For

        End If

    Next j

    If Not ROW_DELETED Then i = i + 1

Loop

For x = 1 To brs

ActiveSheet.Range("Q" x + 1).ClearContents

Next x

Application.ScreenUpdating = True

End Sub

--- Mods ---
File lampiran yang lebih dari 250KB dilepas dari postingan. Silakan penanya 
melampirkan ulang file yang diusahakan maksimal 250KB dengan cara me-reply 
email ini.
----------------
 


 
 
 
 
 




 
 
 


 
 
 
 
 





 
 

 
 




 
 
 




Kirim email ke