terima kasih atas pencerahannya semoga bermanfaat. amin. keep smiling --- On Fri, 12/14/12, Jan Raisin <[email protected]> wrote:
From: Jan Raisin <[email protected]> Subject: Re: [belajar-excel] membuat duk pns otomatis To: [email protected] Date: Friday, December 14, 2012, 4:19 AM Dear mbak/mas Dian, untuk kasus ini jika ingin otomatis, maka satu-satunya cara adalah menggunakan VBA script berikut ditulis dalam sebuah modul VBE, untuk menampilkannya tekan tombol ALT F11 >> Insert >> Module Option Explicit ' -------------------------------------- ' ' prosedur input data dan sort otomatis '' sort Descending berdasarkan : ' ' Golongan, Tahun & Bulan masa kerja '' code by: Ms Jan Raisin ' ' untuk millis Belajar Excel '' 14 Desember 2012 ' ' -------------------------------------- ' ' ini adalah nama prosedurnya Sub InputAndSort() ' deklarasikan variabel bertipe String untuk mencari NIP pada data Dim sCari As String ' deklarasikan variabel bertipe Range untuk menyimpan data berupa objek range ' variabel ini untuk menunjukkan apakah NIP sudah ada di data atau belum Dim Cari As Range ' deklarasikan variabel bertipe Long untuk menyimpan nomor baris data yang paling akhir Dim idxRow As Long ' ini adalah proses pengecekan apakah NIP tersebut sudah ada di data atau belum ' simpan NIP dari cell C2 ke dalam variabel yang bernama sCari sCari = Range("c2").Value ' lakukan pencarian NIP mulai dari cell C8 sampai baris data yang paling bawah ' perhatian!!! pada contoh ini data pertama NIP ada pada cell C8 ' jika berbeda maka sesuaikan lokasinya Set Cari = Range(Range("c8"), Range("c8").End(xlDown)).Find(sCari) ' jika ditemukan maka If Not Cari Is Nothing Then ' tampilkan pesan kepada user bahwa NIP tersebut sudah ada di data MsgBox "NIP tersebut sudah ada", vbOKOnly + vbExclamation, "Validasi Data" ' karena sudah ada maka keluar dari prosedur Exit Sub ' ini adalah akhir dari pengecekan keberadaan NIP pada data End If ' jika sampai ke sini berarti data belum ada ' bikin 2 baris bantu, 1 sebagai header di baris 8 ' dan di baris 9 adalah lokasi penulisan data ' Perhatian!!! insert baris dimulai dari baris data pertama ' jika lokasinya berbeda maka lakukan penyesuaian Range("a8:a9").EntireRow.Insert ' bikin header di setiap kolom baris bantu yang tadi sudah dibuat Range("a8").Value = "No" Range("b8:r8").Value = Range("b1:r1").Value ' copas data input ke tabel Range("b2:r2").Copy Range("b9").PasteSpecial xlPasteValuesAndNumberFormats Application.CutCopyMode = False ' sekarang saatnya melakukan sortir data ' pergi ke cell B8, ini adalah header dari baris bantu yang sudah dibuat Range("B8").Select ' blok seluruh data ke arah kanan dan ke arah bawah Range(Selection, Selection.End(xlToRight).End(xlDown)).Select ' jika ada sort sebelumnya, maka hapus dahulu sort tersebut Sheets("ks dan guru").Sort.SortFields.Clear ' sort descending berdasarkan Golongan, headernya ada di cell D8 Sheets("ks dan guru").Sort.SortFields.Add Key:=Range("d8"), _ SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal ' sort descending berdasarkan Tahun tugas, headernya ada di cell H8 ActiveWorkbook.Worksheets("ks dan guru").Sort.SortFields.Add Key:=Range("h8"), _ SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal ' sort Descending berdasarkan Bulan tugas, headernya ada di cell I8 ActiveWorkbook.Worksheets("ks dan guru").Sort.SortFields.Add Key:=Range("i8"), _ SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal ' sekarang bekerja pada proses sort di sheet KS dan Guru With Sheets("ks dan guru").Sort ' atur range data yang akan disort, mulai dari aktif cell (B8) ke arah kanan dan bawah .SetRange Range(ActiveCell, ActiveCell.End(xlToRight).End(xlDown)) ' baris pertama adalah header data .Header = xlYes ' sort bukan berdasarkan case sensitif .MatchCase = False ' sort dilakukan dari atas ke bawah .Orientation = xlTopToBottom ' defaultnya adalah xlPinYin .SortMethod = xlPinYin ' terapkan sort berdasarkan kriteria yang telah ditentukan .Apply ' akhir bekerja dengan proses sort pada sheet KS dan Guru End With ' cari nomor baris data terakhir dan simpan di variabel idxRow idxRow = ActiveCell.End(xlDown).Row ' bikin nomor urut Range("a9").Value = 1 Range("a10").Value = 2 Range("a9:a10").AutoFill Range(Cells(9, 1), Cells(idxRow, 1)) ' hapus baris bantu Range("b8").EntireRow.Delete ' pergi ke cell A1, biar keliatan lebih cantik aja Range("a1").Select ' ini adalah akhir dari prosedur input dan simpanEnd Sub untuk menjalankannya, buat sebuah objek berupa tombol, shape, atau mungkin kalo mau sedikit narsis boleh lah pakai foto xixixi :D assign macro tersebut ke dalam objek tadi dengan cara klik kanan pada objek tersebut setelah itu setiap selesai input data klik objek tersebut file terlampir hanya disisakan 1 buah sheet saja, untuk mengurangi ukuran file, semoga OP bersedia mempelajari script tersebut sehingga untuk penerapan ke sheet yang lain akan lebih mudah Best Regard, -Ms. Jan Raisin- Pada 13 Desember 2012 15:03, Mr. Kid <[email protected]> menulis: Berhubung belum ada file susulan sebagai contoh datanya, dilampirkan file asli yang telah dikurangi jumlah datanya. Mohon hati-hati bagi yang ne-reply, karena file sudah mendekati batas maksimal ukuran file yang ditentukan dalam peraturan milis. Wassalam, Kid. 2012/12/13 Dian Anas <[email protected]> para master excel yang budiman. saya mau tanya, apakah sorting otomatis pada excel itu bisa dilakukan ketika kita memasukan data baru contohnya kalau kita memasukkan data golongan IV/a dengan masa kerja 23 tahun maka akan diatas golongan IV/a yang masa kerjanya 22 tahun. terima kasih pencerahannya. --- Mods --- File lampiran yang sebesar 492KB tersandera. Kita tunggu kiriman file yang lebih sesuai peraturan milis (<250KB) dari sdr/i Dian. ------------

