Kā izdzēst visu rindu programmā Excel, izmantojot VBA (piemēri)

Rindu pievienošana un dzēšana ir daļa no ikdienas ikdienas uzdevumiem, strādājot ar Excel.

Lai gan to var viegli izdarīt no pašas darblapas, dažreiz, iespējams, vēlēsities izmantot VBA maršrutu, lai izdzēstu rindas programmā Excel. Tie varētu būt konkrētas rindas dzēšana, vairākas atlases rindas, alternatīvo rindu dzēšana vai tās, kurām ir noteikta vērtība.

Šajā apmācībā es parādīšu, kā izdzēst rindas programmā Excel, izmantojot VBA (vairāki scenāriji).

Tātad, sāksim!

Izdzēsiet visu rindu, izmantojot VBA

Lai izdzēstu visu rindu programmā Excel, izmantojot VBA, jums jāizmanto metode EntireRow.Delete.

Piemēram, ja vēlaties dzēst visu darblapas pirmo rindu, varat izmantot tālāk norādīto kodu.

Sub DeleteEntireRow () Rindas (1) .EntireRow.Delete End Sub

Iepriekš minētais kods vispirms norāda rindu, kas jādzēš (kas tiek darīts, norādot numuru iekavās), un pēc tam izmanto metodi EntireRow.Delete, lai to izdzēstu.

Varat arī izdzēst vairākas rindas, norādot šīs rindas kodā.

Piemēram, zemāk esošais kods darblapā izdzēsīs 1., 5. un 9. rindas numuru:

ApakšdzēstEntireRow () Rindas (9) .EntireRow.Delete Rows (5) .EntireRow.Delete Rows (1) .EntireRow.Delete End Sub

Iepriekš minētais kods izmanto to pašu loģiku, kur tas norāda rindu numurus, un Excel izdzēsīs šīs rindas pa vienam.

SVARĪGI: dzēšot rindas ar kaut ko līdzīgu iepriekš minētajam kodam, neaizmirstiet sākt dzēšanu no apakšas un pēc tam iet uz augšu. Piemēram, ja sākat no augšas un vispirms izdzēšat 1. rindu, visas rindas zem tās tiktu pārvietotas par vienu rindu uz augšu un numerācija būtu izslēgta (jo 5. rinda kļūtu par 4. rindu un tā tālāk)

Dzēst visas atlases rindas

Ja vēlaties dzēst visas rindas atlasītajā šūnu diapazonā, varat izmantot tālāk norādīto VBA makro kodu.

Sub DeleteEntireRow () Selection.EntireRow.Delete End Sub

Iepriekš minētais kods attiecas uz EntireRow.Delete metodi visai atlasei.

Dzēst alternatīvas rindas (vai dzēst katru trešo/ceturto/n. Rindu)

Dažreiz jūs varat iegūt datu izgāztuvi, kur katra otrā rinda (vai trešā, ceturtā vai N -tā rinda) ir bezjēdzīga un ir jāizdzēš.

Es strādāju ar finanšu datiem, kur katra otrā rinda bija tukša un bija jāizdzēš.

Šis ir scenārija veids, kad VBA patiešām spīd.

Zemāk ir VBA kods, kas izies visas atlases rindas un izdzēsīs katru otro rindu:

Sub DeleteAlternateRows () RCount = Selection.Rows.Count For i = RCount To 1 Step -2 Selection.Rows (i) .EntireRow.Delete Next i End Sub

Ļaujiet man paskaidrot, kā darbojas šis VBA kods.

Pirmkārt, es izmantoju mainīgo RCount lai iegūtu kopējo atlasīto rindu skaitu.

Tad es esmu izmantojis cilni Nākamais, lai to palaistu tik reižu, cik tur ir rindu. Piemēram, ja ir 12 rindas, šī cilpa darbosies no 12 līdz 1 (t.i., 12 reizes). Ir svarīgi to izpildīt no atlases pēdējās rindas līdz pirmajai, jo mēs nevēlamies, lai rindu numuri tiktu mainīti, izdzēšot rindu.

Tiek izmantots arī 2. solis, jo mums ir jāizdzēš katra otra rinda (no apakšas uz augšu). Ja vēlaties dzēst katru trešo rindu, varat izmantot -3.

VBA cilpas ietvaros esmu izmantojis metodi Selection.Rows (i) .EntireRow.Delete, lai dzēstu katru alternatīvo rindu.

Izdzēsiet tukšās rindas, izmantojot VBA

Varat arī izmantot metodi EntireRow.Delete, lai izdzēstu visas tukšās rindas.

Zemāk ir VBA kods, kas atlasītajā datu kopā atlasīs tukšas šūnas un izdzēsīs visu rindu.

Sub DeleteBlankRows () Selection.SpecialCells (xlCellTypeBlanks) .EntireRow.Delete End Sub

Iepriekš minētais kods izmanto īpašumu SpecialCells, lai atlasītu un izdzēstu visas tukšās šūnas. Šī ir tā pati metode, kas arī ļauj mums izmantot dialoglodziņu “Doties uz īpašo”, lai atlasītu visas tukšās šūnas.

Kad šīs tukšās šūnas ir identificētas, izmantojot SpecialCell, tās tiek izdzēstas, izmantojot EntireRow.Delete metodi.

Piezīme. Šī metode atlasa tukšas šūnas un nepārbauda, ​​vai visa rinda ir tukša. Tātad, ja kāda šūna pēc kārtas ir tukša, tas joprojām izdzēsīs visu rindu.

Dzēsiet rindas ar noteiktu vārdu/vērtību

Varat arī izmantot vienkāršu VBA kodu, lai izietu cauri katrai atlasītā diapazona šūnai un izdzēstu visas rindas, kurās šūna satur noteiktu tekstu vai vērtību.

Piemēram, pieņemsim, ka jums ir datu kopa, un es vēlos izdzēst visas šūnas, kuru atlases 2. slejā ir teksts Printeris.

Zemāk ir kods, kas to darīs:

Sub DeleteRowswithSpecificValue () Attiecībā uz i = Selection.Rows.Count To 1 Solis -1 Ja šūnas (i, 2) .Value = "Printeris" Tad šūnas (i, 2) .EntireRow.Delete End If Next i End Sub

Iepriekš minētais kods vispirms saskaita kopējo atlasīto rindu skaitu. Tas nodrošinās, ka cilpa tiek palaista tikai šīs daudzas reizes. Pēc tam tā izmanto cilni “Nākamajai cilpai”, lai izietu cauri visām 2. slejas šūnām.

IF IFEN ELSE paziņojums tiek izmantots, lai pārbaudītu vērtību katrā 2. slejas šūnā. Un, ja vērtība/teksts atbilst norādītajam tekstam (kas šajā piemērā ir “Printeris”).

Šajā piemērā esmu pārbaudījis, vai teksts atbilst noteiktai virknei vai nē. To var izdarīt arī ar vērtībām. Piemēram, varat izdzēst visas rindas, kurās pārdošanas vērtība ir mazāka par 1000 vai lielāka par 1000.

Piezīme. Šeit ir svarīgi atzīmēt, ka cilpa darbojas no Atlase. Rindas. Skaitīt līdz 1 lai pārliecinātos, ka, izdzēšot rindu, tas neietekmē rindas virs tās.

Kā izmantot šo VBA kodu

Tagad ļaujiet man parādīt, kā izmantot visus šajā apmācībā minētos kodus, lai izdzēstu visu rindu.

Šie kodi ir jākopē un jāielīmē Excel VB redaktora modulī. Kad esat nokopējis šos kodus, varat palaist makro kodus.

Tālāk ir norādītas darbības, lai kopētu un ielīmētu šos VBA kodus modulī:

  1. Turiet taustiņu ALT un nospiediet taustiņu F11 (vai Function + Option + F11 operētājsistēmā Mac). Tas atvērs VB redaktoru
  2. VB redaktorā kreisajā pusē būs projektu meklētājs. Ja jūs to neredzat, dodieties uz opciju Skatīt un pēc tam noklikšķiniet uz Project Explorer.
  3. Ar peles labo pogu noklikšķiniet uz jebkura objekta Project Explorer (darbgrāmatai, kurā vēlaties palaist kodu).
  4. Dodieties uz Ievietot un pēc tam noklikšķiniet uz moduļa. Tādējādi darbgrāmatai tiks ievietots jauns modulis
  5. Kopējiet un ielīmējiet iepriekš minētos kodus modulī.

Un, lai palaistu šos kodus, varat novietot kursoru jebkurā koda vietā (kuru vēlaties palaist) un nospiest taustiņu F5 (vai noklikšķināt uz zaļā trīsstūra VBA rīkjoslā).

Esmu arī uzrakstījis detalizētu apmācību par dažādiem VBA makro kodu palaišanas veidiem programmā Excel.

Ja kāds no šiem kodiem ir jāizmanto diezgan bieži, varat arī apsvērt iespēju tos pievienot personīgajai makro darbgrāmatai un pēc tam QAT. Tādā veidā kods būs pieejams jebkurā darbgrāmatā ar vienu klikšķi.

Tātad šie bija daži VBA kodi, kurus varat izmantot, lai programmā Excel izdzēstu visas rindas (dažādos scenārijos). To pašu loģiku var izmantot arī gadījumā, ja vēlaties dzēst kolonnas, nevis rindas (ar atbilstošu korekciju koda piemēros).

Ceru, ka šī apmācība jums šķita noderīga!

wave wave wave wave wave