Excel - Makro untuk memadam baris dengan nilai tertentu

Microsoft Excel adalah salah satu alat paling berguna untuk bermain-main dengan nombor. Dalam kes di mana sejumlah besar baris atau lajur terlibat, Excel juga mempunyai rangka asas visual yang boleh digunakan untuk merakam atau menulis makro adat . Makro VBA membenarkan pengguna mengautomasikan proses itu dengan mempunyai input pengguna minimum. Makro ini boleh disesuaikan untuk berfungsi pada nilai atau baris tertentu. Pengguna juga boleh menyesuaikan apa yang seharusnya menjadi julat permulaan dan akhir bagi nilai atau baris tertentu. Semua pilihan ini meningkatkan penggunaan Excel sebagai aplikasi pengendalian data .

  • Isu
  • Penyelesaian
  • Perhatikan bahawa

Isu

Pada dasarnya, apa yang saya ada adalah satu lembaran penuh dengan maklumat mengenai jabatan yang berlainan dan apa yang saya ingin lakukan ialah padam setiap baris KECUALI baris yang mengandungi beberapa nilai yang ditentukan (yang saya ingin masukkan pada menjalankan skrip).

Katakan dalam lajur yang menamakan jabatan (dalam helaian saya bernama "Avd"), saya ingin skrip untuk mencari mana-mana sel yang tidak mengandungi, contohnya nombor 1, 3, 5, 6 atau 21 .. dan sebagainya (saya mempunyai kira-kira 36 nombor yang berbeza).

Penyelesaian

Apa yang anda perlu lakukan ialah menyerlahkan maklumat dalam lajur dan kemudian menjalankan Makro berikut. Terdapat kotak yang akan meminta anda memilih nilai yang ingin anda simpan. Ini boleh didapati sehingga 30, 000 baris.

 Sub DeleteRows () Dim strToDelete Sebagai Dimensi RngSrc As Range Dim Numows Sebagai Integer Dim ThisRow Sebagai Integer Dim ThatRow Sebagai Integer Dim ThisCol Sebagai Integer Dim J Sebagai Integer Dim DeletedRows Sebagai Integer strToDelete = InputBox ("Nilai untuk Trigger Keep, Jason ??? ", " Delete Rows ") Set rngSrc = ActiveSheet.Range (ActiveWindow.Selection.Address) NumRows = rngSrc.Rows.Count ThisRow = rngSrc.Row ThatRow = ThisRow + NumRows - 1 ThisCol = rngSrc.Column Dim topRows As Integer Dim bawahRendah Sebagai Integer bottomRows = 30000 Untuk J = ThisRow To NumRows Langkah 1 Jika Sel (J, ThisCol) = strToDelete Kemudian 'Rows (J) .Select topRows = J Exit Untuk DeletedRows = DeletedRows + 1 End If Next J For J = (topRows + 1) Ke NumRows Langkah 1 Jika Sel (J, ThisCol) strToDelete Kemudian 'Rows (J) .Select bottomRows = J Keluar Untuk' DeletedRows = DeletedRows + 1 End If Next J Jika topRows 4 Then ActiveSheet.Range (Sel (4, 1), Sel (topRows - 1, 52)). Pilih Selection.delete Shift: = xlUp Akhir Jika ActiveSheet.Range (Sel (bottomRows - topRows + 4, 1), Sel (30000, 52)). Pilih Selection.delete Shift: = xlUp 'MsgBox "Bilangan baris dipadam:" & DeletedRows End Sub 

Perhatikan bahawa

Terima kasih kepada Jason untuk tip ini di forum.

Artikel Sebelumnya Artikel Seterusnya

Tip-Tip Utama