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
Další články k tématu
- Jak vybírat (označovat) buňky
- Zapiš údaj do buňky
- Zapiš vzorec (funkci) do buňky
- Datum a čas - nastavit formát
- Přečti údaj z buňky
- Range objekt - oblast buněk
- Resize Offset - změna oblasti buněk
- Řádky a sloupce ukázky kódu - právě čtete
- Zobrazit - Skrýt, řádky - sloupce
- Prázdné buňky - zjistit
- Komentáře co vše lze provádět
- Zamykání/odemykání buněk - Protect/Unprotect
Komentáře zatím nejsou
Můžete být prvními co zanechají smysluplný komentář.
Přidání nového 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
Excel
- Základy MS Excel
- menu Soubor
- Formát dat
- Vložit
- Grafy
- Vzorce (Funkce)
- Matice
- Data
- Revize (Nástroje)
- VBA Úvod a seznamy článků
- VBA Teorie základy
- VBA Buňky cell
- Jak vybírat (označovat) buňky
- Zapiš údaj do buňky
- Zapiš vzorec (funkci) do buňky
- Datum a čas - nastavit formát
- Přečti údaj z buňky
- Range objekt - oblast buněk
- Resize Offset - změna oblasti buněk
- Řádky a sloupce ukázky kódu
- Zobrazit - Skrýt, řádky - sloupce
- Prázdné buňky - zjistit
- Komentáře co vše lze provádět
- Zamykání/odemykání buněk - Protect/Unprotect
- VBA Listy sheet
- VBA Práce se soubory
- VBA Formuláře (UserForm)
- VBA Grafy
- VBA Application
- VBA Pás karet, Menu
- VBA Triky
- VBA praktické příklady kódu
- Praktické příklady
- Finanční poradce
- Šablony - Templates
- Testy
- Ostatní
Google+
Novinky
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í
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.