Bagaimana cara saya me-refresh ulang filter otomatis Excel saat data diubah?
Use case: Saya mengubah nilai satu sel ke nilai yang difilter. Saya ingin melihat baris saat ini menghilang tanpa harus melakukan hal lain.
microsoft-excel
Sorin
sumber
sumber
Jawaban:
Saling menukar kode dengan ini sepertinya melakukan trik juga (setidaknya di Excel 2010):
sumber
Saya menemukan bahwa ketika saya bekerja dengan tabel, ini tidak berhasil. Filter tidak ada di lembar tetapi di meja. kode ini berhasil
Saya menemukan informasi di sini: http://www.jkp-ads.com/articles/Excel2007TablesVBA.asp
sumber
Klik kanan pada nama sheet Anda, pilih "Lihat Kode" dan tempel kode di bawah ini. Setelah menempel, klik ikon Excel di bawah "File" di kiri atas, atau ketik Alt-F11, untuk kembali ke tampilan spreadsheet.
Ini akan memungkinkan penyegaran otomatis. Jangan lupa untuk menyimpan file dalam format dengan kebohongan dukungan makro
.xlsm
.sumber
Saya menggunakan VBA / Makro berdasarkan
Worksheet_Change
acara juga, tetapi pendekatan saya sedikit berbeda ... Ok, pertama kode dan kemudian penjelasannya:(Gunakan kombinasi tombol Alt+ F11untuk membuat panel pengembangan muncul dan tempel kode ke lembar kerja yang berisi filter yang ingin Anda segarkan secara otomatis.)
Dalam contoh saya, saya mengasumsikan memiliki filter sederhana pada satu kolom (L dalam kasus saya) dan bahwa rentang data saya ada di baris dari 1 (bahkan jika mungkin berisi tajuk) ke 126 (pilih nomor yang cukup hebat untuk dijadikan Tentu). Operasi ini sederhana: karena ada sesuatu yang berubah pada lembar saya, filter pada rentang yang ditentukan akan dihapus / diterapkan kembali sehingga untuk membuatnya segar. Yang perlu sedikit penjelasan di sini adalah Field dan Kriteria .
The Lapangan adalah bilangan bulat offset jangkauan. Dalam kasus saya, saya hanya memiliki satu filter kolom dan rentang dibuat oleh satu kolom (L) yang merupakan yang pertama dalam rentang (karena itu saya menggunakan 1 sebagai nilai).
The Kriteria adalah string yang menjelaskan filter untuk diterapkan ke berbagai data. Dalam contoh saya, saya ingin menunjukkan hanya baris di mana kolom L berbeda dari 0 (karenanya saya menggunakan "<> 0").
Itu saja. Untuk referensi lebih lanjut tentang metode Range.AutoFilter, lihat: https://msdn.microsoft.com/en-us/library/office/ff193884.aspx
sumber
Hanya untuk mengkonsolidasikan jawaban:
Sorin mengatakan:
Klik kanan pada nama sheet Anda, pilih "Lihat Kode" dan tempel kode di bawah ini. Setelah menempel, klik ikon Excel di bawah "File" di kiri atas, atau ketik Alt-F11, untuk kembali ke tampilan spreadsheet.
Ini akan memungkinkan penyegaran otomatis. Jangan lupa untuk menyimpan file dalam format dengan dukungan makro .xlsm.
Dan Chris menggunakan kode ini (yang baru saja saya lakukan pada 2010):
Jika Anda tidak memperluas posting, Anda hanya akan melihat jawaban yang panjang! ;)
sumber
Maaf, rep komentar tidak mencukupi. (Admin, silakan memotong ini menjadi komentar di atas.) Respons pengguna "danicotra" dimulai dengan "Saya menggunakan VBA / Makro berdasarkan pada worksheet_Change event juga, tapi pendekatan saya ..." dengan
'filter hapus pertama
' kemudian terapkan lagi
adalah solusi yang tepat ketika menggunakan Excel 2007+. Namun .AutoFilter.ApplyFilter tidak valid di XL03 dan sebelumnya jadi saya menunjukkan cara di bawah ini.
Saya mohon agar para ahli dan guru yang benar membaca kode karena saya cukup yakin bahwa itu adalah bahan rak paling atas. Mungkin hitungan downvote yang tidak dapat dijelaskan pada jawaban ini dapat dibalik ketika orang melihat hal baik apa yang dilakukan di bawah.
danicotra menggunakan contoh sederhana. Sebenarnya, Anda dapat melakukan ini secara lebih umum. Asumsikan Dengan ActiveSheet untuk yang berikut (atau objek lembar lainnya):
Simpan rentang autofilter. Ini memiliki .AutoFilter.Filters.Count kolom, dan (.AutoFilter.Range.Count / .AutoFilter.Filters.Count) baris, disimpan ke rngAutofilter
Kumpulkan dalam array myAutofilters masing-masing dari 4 properti masing-masing .AutoFilter.Filters.Count Item autofilter, berhati-hatilah agar Anda menghindari "Kesalahan yang ditentukan aplikasi" ketika .Pada atau .Operator salah. (myAutofilters akan direDim ke jumlah baris dan kolom pada langkah 1)
Matikan filter tetapi pertahankan dropdown dengan .ShowAllData
Untuk setiap Item filter yang. Pada menurut array yang disimpan, atur ulang 3 dari 4 properti masing-masing .AutoFilter.Filters.Count Item autofilter. Sekali lagi berhati-hatilah agar Anda menghindari "Kesalahan yang ditentukan aplikasi" ketika .Operator salah, jadi untuk setiap item "i",
rngAutofilter. Bidang AutoFilter: = i, Kriteria1: = myAutofilters (i, 2)
atau
rngAutofilter.AutoFilter Field: = i, Kriteria1: = myAutofilters (i, 2), Operator: = myAutofilters (i, 3), Kriteria2: = myAutofilters (i, 4)
Sekarang autofilter akan diaktifkan kembali, dalam kisaran yang sama seperti sebelum kode Anda dimulai, tetapi dengan autofilter diperbarui untuk perubahan data.
sumber
sumber