VBA Sort - Tips Excel

Daftar Isi

Makro VBA Excel untuk mengurutkan data. Saya tidak suka bagaimana perekam makro membuat kode tambahan untuk penyortiran. Menyortir di Excel VBA harus sederhana. Satu baris kode, dengan kolom untuk diurutkan, ke arah mana (ascending atau descending) dan apakah ada header.

Menonton video

  • Perekam makro Excel tidak melakukan pekerjaan yang baik dengan penyortiran rekaman.
  • Asalkan data Anda dapat dipilih menggunakan Ctrl + * (dikenal sebagai Wilayah Saat Ini)
  • Asalkan Anda tidak mengurutkan berdasarkan warna atau ikon atau lebih dari tiga level
  • Gunakan metode Range (). CurrentRegion.Sort sekolah lama di Excel

Transkrip Video

Belajar Excel dari MrExcel Podcast, Episode 2093: Menyortir Dengan VBA

Hai, selamat datang kembali di netcast, saya Bill Jelen. Pertanyaan hari ini dari James di Huntsville. James, saya menggunakan perekam makro untuk merekam tindakan penyortiran data. Jadi katakanlah James perlu mengurutkan data ini berdasarkan Sektor dan Pelanggan. Jadi Anda keluar ke sini ke tab Tampilan, Makro, Rekam Makro Baru, SortMyReports, Ctrl Tombol Pintasan - Saya akan mengetik Shift + S di sana, dan klik OK. Baiklah, jadi dari sini kami melakukan: Data, Sortir, dan kami ingin mengatakan bahwa kami ingin Mengurutkan berdasarkan Sektor lalu Tambahkan Tingkat dan Urutkan berdasarkan Pelanggan, dan klik OK. Di pojok kiri bawah kita klik Stop Recording. Baiklah, jadi itu dia. Sepertinya berhasil, bukan?

Tapi inilah masalahnya: besok Anda akan memiliki lebih banyak data atau lebih sedikit data atau, Anda tahu, apa pun. Dan Makro yang Direkam itu mengerikan. Mari kita lihat, saya akan melakukan Alt + F8 dan melihat SortMyReport, akan mengeditnya. Baiklah, dan ini adalah semua yang mereka rekam jadi SortFields.Clear, lalu mereka menyiapkan jenis baru dengan SortFields.Add dan mereka akan di-hardcode, dan ada 568 baris, dan semuanya.

Sekarang memilah kembali pada hari itu, saya benar-benar mudah. Baiklah, lalu di Excel 2007 mereka menambahkan Urutkan menurut Ikon, Urutkan menurut Warna, Urutkan menurut Warna Font, kemampuan untuk memiliki 15 Urutan Tingkat dan semuanya menjadi benar-benar gila. Jadi, saya tidak lagi menggunakan Makro yang Direkam. Saya hanya pergi ke sekolah tua.

Sekarang, saya akan beralih kembali ke Excel. Inilah aturan agar penyortiran sekolah tua ini berfungsi, oke. Heading di atas setiap Kolom: heading itu harus dalam satu baris, bukan dua baris. Jika Anda memiliki gelar di atas sana dan tidak masalah untuk memiliki gelar di sana. Anda membutuhkan baris kosong antara judul dan heading pertama. Jika Anda memiliki catatan di sisi kanan: istri Anda menelepon dengan daftar belanjaan, “Hai, sayang, berhenti dalam perjalanan pulang. Dapatkan susu, telur, dan vodka. ” Harus ada kolom kosong antara data Anda dan itu. Dan jika ada catatan boilerplate di bagian bawah, pastikan ada baris kosong antara bit data terakhir dan catatan itu.

Seluruh tujuan saya adalah bahwa kita harus dapat datang ke salah satu sel: sel pojok kiri atas data ini dan tekan Ctrl + * dan itu akan memilih data yang akan diurutkan. Sekarang, saya akan menekan Ctrl +. yang membawa kita ke sudut ini dan kemudian Ctrl +. akan membawa kita ke pojok kanan bawah, Ctrl +. membawa kami ke pojok kiri bawah. Baiklah, jadi jika Ctrl + * akan memilih data Anda dengan benar, maka semuanya bagus. Jika Anda meletakkan daftar belanjaan Anda di Kolom H dan kami melihat kami muncul di sini dan Ctrl + *, nah sekarang, kami sedang menyortir daftar belanjaan sebagai bagian dari hal itu dan daftar belanjaan Anda akan kacau. Atau kami akan mengurungkan: jika baris ini tidak ada di sini, sekarang kami melakukan Ctrl + *, lihat kami- sekarang mereka tidak akan tahu apa-apa karena tidak memiliki judul lagi, oke?

Jadi, jika Anda akan menggunakan kode saya, pastikan semua aturan ini benar: tidak boleh menyortir warna saya, tidak menyortir ikon saya, 3 atau kurang tingkat penyortiran. Urungkan, baiklah. Jadi, inilah yang kami ketahui: kami tahu bahwa setiap hari data kami akan dimulai dengan A5. Jika kita tidak tahu berapa banyak baris atau berapa banyak - bahkan berapa banyak kolom yang mungkin kita miliki. Saya tidak dapat membayangkan situasi di mana kolom dipertukarkan tetapi yang pasti jumlah baris akan berubah. Jadi Alt + F11, kita hanya akan memulai dari sel pojok kiri atas. Jadi Range, dalam kasus saya adalah “A5” .CurrentRegion. Wilayah saat ini adalah properti bangunan yang mengagumkan ini yang mengatakan bahwa kita akan menekan Ctrl + Shift + * dan semua yang disertakan di sana akan disortir. Dan kami melakukan .Sort. .Sort, baiklah.

Sekarang, inilah masalahnya. Jika Anda ingin melakukan pengurutan satu tingkat itu mudah: Key1: =. : = dan kami hanya mengatakan bahwa itu akan menjadi Range - Oh, saya lupa apa itu. Itu Sektor, di mana Sektor? Sektor ada di Kolom C. Jadi C5 dalam kasus saya, Range ("C5") dan kemudian, Order1: = xlAscending. Saya menekan tombol Panah Bawah di sana, lalu Tab. Baiklah sekarang, saya bisa terus ke kanan tapi saya tidak akan melakukan itu. Saya akan pergi ke baris baru jadi spasi, garis bawah untuk pindah ke baris baru, lanjutkan baris kode ini, oke? Dan jika saya memiliki jenis level kedua: Key2: = dan dalam hal ini saya ingin mengurutkan berdasarkan pelanggan yang ada di Kolom D, jadi D5. Dan kemudian, Order2: xlAscending. Cantik.

Saya tidak memiliki jenis level ketiga tetapi jika Anda memilikinya, itu akan menjadi Key3 dan kemudian Order3. Lalu yang berikutnya, yang harus Anda lakukan adalah Header, oke? Jadi, Header: = xlGuess di situlah Anda mendapatkan banyak masalah. Jadi kami akan mengatakan xlYa di sana, pasti sebagai Header. Bahkan di masa lalu, Macro Recorder akan menggunakan xlGuess. Saya benci Excel untuk menebak.

Itu dia. Satu baris kode, hanya itu yang harus Anda lakukan dan itu akan bekerja dengan lebih banyak baris, lebih sedikit baris. Itu hal yang indah dan indah. Baiklah, jadi kita akan kembali ke sini ke Excel. Ctrl + Shift + S masih merupakan hal yang ditetapkan. Sekarang- Jika Anda baru saja beralih ke VBA dan Anda mengetiknya sendiri, Anda dapat pergi ke Alt + F8, temukan nama Makro Anda, klik Opsi dan ketik Ctrl + Shift + S di sana atau kami bahkan dapat menetapkannya ke a Tombol pintas di sini di Bilah Alat Akses Cepat. Klik kanan, Sesuaikan Bilah Alat Akses Cepat tempat saya memilih dari Makro kami. Saya memiliki Makro bernama SortMyReport, akan mengklik Tambah - Saya benci diagram alur kecil di sana. Kami akan memodifikasinya dan saya ingin ada semacam situasi A hingga Z di sana, tetapi tentu saja tidak. Mungkin anak panah itu siapa tahu, siapa tahu, pilih saja.Bola 8 ajaib, saya tidak tahu. Saya akan memilih orang kecil ini di sini, klik OK, klik OK. Baiklah, jadi sekarang data kita Diurutkan berdasarkan Tanggal, saya pilih - dan tidak masalah apa yang saya pilih. Itu selalu akan kembali dan mengurutkan dari A5, saya klik si kecil dan data saya sekarang Diurutkan berdasarkan Sektor, dalam sektor, oleh Pelanggan. Ini bekerja dengan baik, oke?

Jadi jika Anda adalah penggemar Macro Recorder, semoga saya mengucapkan selamat untuk Anda. Tetapi kode Perekam Makro hari ini untuk pengurutan-pengurutan di VBA jauh lebih sederhana; untuk kembali, cukup gunakan yang satu ini, satu baris kode.

Biasanya di tempat inilah saya mencoba dan membuat Anda membeli buku ini, tetapi hari ini saya rasa Anda harus melihat buku ini: Excel 2016 VBA dan Macro oleh Tracy dan saya sendiri. Wow! Lihat ini. Saya tidak menyadari ada versi dalam bahasa lain. Kami akan memberi Anda Kurva Pembelajaran Makro sepenuhnya dari merekam Makro pertama Anda ke kode yang Anda butuhkan.

Nah, ringkasan sederhana untuk hari ini: Excel Macro Recorder tidak melakukan pekerjaan yang baik dengan perekaman, pengurutan: asalkan data Anda dapat dipilih menggunakan Ctrl + * yang dikenal sebagai wilayah saat ini, asalkan Anda tidak mengurutkan seperti warna atau ikon atau lebih dari tiga level, cukup gunakan metode Range (). CurrentRegion.Sort sekolah lama di VBA untuk mengurutkan.

Saya ingin berterima kasih kepada James karena telah mengirimkan pertanyaan itu. Saya ingin berterima kasih karena Anda telah mampir. Sampai jumpa di lain waktu untuk netcast lain dari.

Unduh berkas

Unduh file contoh di sini: Podcast2093.xlsm

Artikel yang menarik...