Excel 2010 penyaringan dinamis

0

Saya memiliki tabel data besar yang memiliki tanggal di bagian atas. Filter ini dihidupkan. Saya perlu mengurutkan data ini (terbesar ke terkecil) berdasarkan tanggal yang dimasukkan ke bidang yang ditentukan pengguna. Tapi saya tidak tahu bagaimana membuat ini dinamis.

Jadi katakan saya memiliki 12 kolom dengan bulan di bagian atas masing-masing dan kemudian satu set angka di bawah ini. Jika saya memasukkan Feb ke sel tertentu, saya ingin excel untuk mengurutkan berdasarkan Feb colum dari terbesar ke terkecil. Jika saya kemudian mengubah sel Feb ke Mei saya ingin mengurutkan pada data Mei

Tolong bantu

simon
sumber
1
Apakah maksud Anda Anda memerlukan jenis kolom-bijaksana?
chuff
1
"Urutkan data berdasarkan tanggal yang dimasukkan" bagaimana tepatnya?
Karan
Jadi katakan saya memiliki 12 kolom dengan bulan di bagian atas masing-masing dan kemudian satu set angka di bawah ini. Jika saya memasukkan Feb ke sel tertentu, saya ingin excel untuk mengurutkan berdasarkan Feb colum dari terbesar ke terkecil. Jika saya kemudian mengubah sel Feb ke Mei saya ingin mengurutkannya pada data Mei
simon
Apa yang sudah Anda coba dan / atau teliti? Versi Excel apa yang Anda gunakan? Apakah efek yang diinginkan untuk mengurutkan seluruh tabel atau hanya kolom tertentu?
CharlieRB

Jawaban:

1

Seperti yang saya pahami, Anda memiliki satu set data bulanan yang akan saya anggap rentang Januari hingga Desember, dengan data setiap bulan tercantum dalam kolom terpisah dan dengan sel header. Anda ingin dapat menyortir kumpulan data ini berdasarkan pada nilai terbesar ke nilai terkecil di bulan tertentu, dengan bulan yang dipilih oleh entri ke sel di lembar kerja.

Meskipun dimungkinkan untuk menghasilkan tampilan nilai yang diurutkan dalam set data menggunakan rumus lembar kerja, set data itu sendiri tidak akan diurutkan dan perlu disaring.

Menggunakan VBA akan memungkinkan pendekatan yang jauh lebih sederhana yang memiliki manfaat tambahan karena dapat menangani data yang difilter.

Saya berasumsi bahwa entri bulan untuk mengurutkan berdasarkan akan berada di sel A1, yang telah dinamai sort_month. Data, termasuk tajuk untuk nama bulan, ada di kolom B- M. Rentang data dinamai filtered_data; dalam data contoh saya, ini adalah kisaran B1:M25.

Kode VBA yang akan melakukan penyortiran cukup pendek:

  Private Sub Worksheet_Change(ByVal Target As Range)
      If Not (Intersect(Target, Range("sort_month")) Is Nothing) Then
          Dim theMonth As Long
          theMonth = month(DateValue("01-" & Range("sort_month").Value & "-1900"))
          Range("filtered_data").Sort Key1:=Cells(1, theMonth + 1), _
              Order1:=xlDescending, header:=xlYes
      End If
  End Sub

Subrutin ini akan berjalan secara otomatis setiap kali perubahan dilakukan sort_month(yaitu, sel A1). Masuk akal untuk menyiapkan validasi data pada sel ini untuk memastikan bahwa hanya nama bulan yang valid ("Jan", "Feb", dll.) Yang dapat dimasukkan ke dalam sel ini.

Kode tidak boleh ditempatkan dalam modul VBA standar, tetapi sebaliknya harus dilampirkan ke lembar kerja. Panel kode untuk lembar kerja dapat diakses dengan mengklik kanan tab lembar kerja dan memilih "Lihat Kode". Kode kemudian dapat ditempelkan ke panel.

Meskipun mungkin berada di luar kebutuhan Anda, tabel sortir dapat dengan mudah diatur untuk penggunaan umum (yaitu, non-pengembang). Versi yang ditunjukkan di bawah ini memiliki validasi data drop-down untuk entri bulan, pemformatan tabel ditambahkan untuk keterbacaan, dan pemformatan bersyarat untuk menyorot kolom pengurutan.

tabel sortir diformat

orang yg kurang ajar
sumber