Přeskočit navigaci | Přeskočit na novinky

Jste zde: Úvodní stránka » excel » vba-listy-bunky » radky-sloupce-excel-vba-kody

Řádky a sloupce - ukázky kódu Excel VBA

práce s řádky a sloupci na základě požadovaných podmínek - první, poslední, vyhovující podmínce, smazat, vložit, označit...

Aktualizace 6.5.2012 doplněny další kódy

Seznam praktických příkladů

Při práci s daty v Excelu je mnohdy potřeba tato data upravit. Například něco vymazat najít požadovaný řádek. Sloupec. V tomto članku jsou ukázky kódu které lze použít:

  • Nalezení prvního prázdného řádku
  • Nalezení posledního obsazeného řádku
  • Nalezení prvního prázdného sloupce
  • Nalezení posledního obsazného sloupce
  • Označení řádků splňujících podmínku
  • Označení sloupců splňujících podmínku
  • Smazání prazdných řádku
  • Smazání řádku splňujících podmínku
  • Smazání každého x-tého řádku
  • Smazání každého x-tého sloupce
  • Smazání prázdných sloupců
  • Smazání sloupců splňujících podmínku

Každá věc se dá vyřešit několika způsoby. Záleží na požadované rychlosti, zkušenostech s programováním (na co je mi efektní kód kterému nerozumím).

Nalezení prvního prázdného řádku

S použitím cyklu:

For Radek = 1 To 65536 If Cells(Radek, 1) = "" Then 'hledáme ve sloupci A PrvniPrazdnyRadek = Radek Exit For End If Next Radek MsgBox "První prázdný řádek má číslo: " & PrvniPrazdnyRadek End Sub

Lepší VBA kód bez cyklu.

PosledniPlnyRadek = Range("A1").End(xlDown).Row ' Ve sloupci A PrvniPrazdnyRadek = PosledniPlnyRadek + 1 MsgBox "První prázdný řádek má číslo: " & PrvniPrazdnyRadek

Nalezení posledního obsazeného řádku

Počítat musíme od konce, pokud počítame od začátku, počítaní skončí u prvního prazdného řádku. Ač třeba po pěti prázdných řádcích pokračuje jeden plný.

PosledniPlnyRadek = Cells(Rows.Count, "A").End(xlUp).Row ' Ve sloupci A MsgBox "Poslední obsazený řádek má číslo: " & PosledniPlnyRadek

Pokud poslední řádek obsahuje text, tento kód jej nevezme v potaz. Proto chceteli-mít neprustřelné řešeni nejprve zkontrolujte zda poslední řádek je prázdný. Pokud ano začněte tímto kódem. Mezi námi kdo používá v Excelu tabulky se zaplněným (miliónem) 1.048.576 řádků...

Nalezení prvního prázdného sloupce

použijeme cyklus

If Cells(1, Sloupec) = "" Then 'hledáme v řádku 1 PrvniPrazdnySloupec = Sloupec Exit For End If Next Sloupec MsgBox "První prázdný sloupec má číslo: " & PrvniPrazdnySloupec

Lepší VBA kód bez cyklu.

PrvniPrazdnySloupec = Range("A1").End(xlToRight).Column ' řádek 1 PrvniPrazdnySloupec = PrvniPrazdnySloupec + 1 MsgBox "Pprvní prázdný sloupec má číslo: " & PrvniPrazdnySloupec

Nalezení posledního zaplněného sloupce

Jako u řádků počítáme od konce.

PosledniPlnySloupec = Cells(1, Columns.Count).End(xlToLeft).Column ' Ve sloupci A MsgBox "Poslední obsazený sloupec má číslo: " & PosledniPlnySloupec

Jako u řádků, doporučuji kontrolu zda je poslední sloupec obsazen. Tj. Sloupec číslo 16384 (XFD)

Smazání prázdných řádku

Kontroluje zda ve sloupci A je prázdný řádek, pokud ANO, tak je smazán.

' pro určení odkud kam můžeme použít předcházející kódy ' já jsem použil pro jednoduchost konstanty For i = 30 To 27 Step -1 If StrComp("", Cells(i, "A").Value) = 0 Then MsgBox i Rows(i).Delete End If Next i

Smazání řádku splňujících podmínku

Kontroluje zda ve sloupci A je řádek obsahující text "smazat", pokud ANO, tak je smazán.

For i = 30 To 27 Step -1 If StrComp("smazat", Cells(i, "A").Value) = 0 Then MsgBox i Rows(i).Delete End If Next i

Další možný kód

Set rng = Range("A1:A10") i = 1 For counter = 1 To rng.Rows.Count If rng.Cells(i) = "smazat" Then rng.Cells(i).EntireRow.Delete Else i = i + 1 End If Next

Smazání každého x-tého řádku

Smaže každý x-tý řádek v zadané oblasti.

N = 2 Set DeleteRange = Range("A1:D20") If DeleteRange Is Nothing Then Exit Sub If DeleteRange.Areas.Count > 1 Then Exit Sub If N < 2 Then Exit Sub With DeleteRange rCount = .Rows.Count For r = N To rCount Step N - 1 .Rows(r).EntireRow.Delete Next r End With

Smazání každého x-tého sloupce

Smaže každý x-tý sloupec v zadané oblasti.

N = 2 Set DeleteRange = Range("A1:D10") Dim cCount As Long, c As Long If DeleteRange Is Nothing Then Exit Sub If DeleteRange.Areas.Count > 1 Then Exit Sub If N < 2 Then Exit Sub With DeleteRange cCount = .Columns.Count For c = N To cCount Step N - 1 .Columns(c).EntireColumn.Delete Next c End With

Označení řádků splňujících podmínku

V přípravě

Označení sloupců splňujících podmínku

V přípravě

Smazání prázdných sloupců

Smaže sloupce které v zadané oblasti mají prázdný buňku v prvním řádku prázdnou.

Set Rng = Range("A1:K1") i = 1 For counter = 1 To Rng.Columns.Count If Rng.Cells(i) = "" Then Rng.Cells(i).EntireColumn.Delete Else i = i + 1 End If Next

Smazání sloupců splňujících podmínku

Smaže sloupce splňující podmínku že v obsahují v prvním řádku text smazat.

Set Rng = Range("A1:G1") i = 1 For counter = 1 To Rng.Columns.Count If Rng.Cells(i) = "smazat" Then Rng.Cells(i).EntireColumn.Delete Else i = i + 1 End If Next

Poznámky

Budete-li zpracovávat milióny řádku předpokládám, můžete si nastudovat složitější metody SpecialCells, AutoFilter atd., případně použijete databázi.

Kódy lze napsat i efektivněji (tj. pracuji rychleji). Pro pár tisíc řádku rychlost výše uvedených kódu postačí, postačí i pro několik desítek tisíc řádku. V porovnání s ručním zpracováním jsou všechny výše uvedené kódy efektivnější (a navíc pracují bezchybně, oproti lidskému faktoru). Místo zpracovávání desítky hodin člověkem to kód zvládne v několika sekundách (minutách).

Článek byl aktualizován: 06.05.2012 12:20



| tisk stránky TISK | nahoru NAHORU |
| |

Další články k tématu




Komentáře zatím nejsou

Můžete být prvními co zanechají smysluplný komentář.


Přidání nového komentáře




(vlož číslo šest)

Z bezpečnostních důvodu dočasně nemůžete použít HTML značky a URL. Děkuji za pochopení.
Děkuji, za Vaše komentáře.

Za obsah komentářů neodpovídám, jelikož jsou komentáře publikovány ihned po jejich napsání čtenářem. Toto nemohu nijak ovlivnit. Přesto si vyhrazuji možnost jakýkoli neslušný komentář smazat bez udání důvodu.




Nejnovější článek

Z článku o excel jsem jako poslední přidal či upravil článek 14.05.2012:
Kombinování funkcí - vzorců.

Nejčtenější článek




Google+

  

Facebook

facebook  

Novinky

Word: 12.5.2012:
Matematické rovnice (vzorce) - Word 2010

Excel: 14.05.2012:
Kombinování funkcí - vzorců

Access: 28.04.2012:
VBA - Jak spustit v MS Access

Power Point: 25.04.2012:
SmartArt - PowerPoint 2010

Outlook 26.04.2012:
Outlook 2010 - jak vypadá

Project: 05.04.2012:
Kalendář ukázka

OneNote: 17.10.2010:
OneNote 2010 – popis obrazovky

Office 30.04.2012:
Kde hledat odpovědi na dotazy o MS Office

Poděkování

Poděkování patří hlavně mojí nejbáječnější manželce.

LinkedIN

Translate

     

Stránky o MS Office produktu společnosti Micosoft. Neslouží jako technická podpora.
| Email na autora: lasak@centrum.cz | Copyright © : Pavel a Danka 2006 - 2012 |
| Doporučuji: Advokátní kancelář Brno - Dana Lasáková | 1687

Tento web zatím neprošel jazykovou korekturou. Beta verze redakčního systému.