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

Nový videokurz na Seduo: Excel pro začátečníky

     

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

Buňky, oblasti - ukázky kódu Excel VBA


práce s buňkami (oblastmi buněk) na základě požadovaných podmínek - počet, barvy, velikost, ...

Aktualizace:1.9.2013

Seznam praktických příkladů

MS Excel 2010 - tip logo

Při práci v Microsoft Excelu je někdy potřeba použít kód pro práci s buňkami. Proč jej vymýšlet a nepoužít hotové - ověřené řešení. V tomto článku jsou praktické ukázky kódu, které tyto problémy řeší:


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).

Spočti barevné buňky

Požadavek na funkci, které v označené oblasti spočte buňky, které mají stejnou barvu pozadí jako označená buňka.

Function SpoctiBarvuPozadi(Rng As Range, RngColor As Range) As Integer Dim Bunky As Range Dim Barva As Long Barva = RngColor.Range("A1").Interior.Color For Each Bunky In Rng If Bunky.Interior.Color = Barva Then SpoctiBarvuPozadi = SpoctiBarvuPozadi + 1 End If Next Bunky End Function

Poznámka: Kód umístit do Modulu.

Do buňky v listu se vloží tato nová uživatelská funkce:

Syntaxe:

=SpoctiBarvuPozadi(oblast;buňka)

Popis argumentů:

  • oblast - oblast ve které se spočtou buŇky jejiž pozadí vyhovuje barrvě z buňka
  • buňka - buňka, které pozadí obsahuej heldanou barvu

Příklad použití

V oblasti A1:A4, spočte buňky které mají stejné pozadí jako buňka A1.

=SpoctiBarvuPozadi(A1:A4;A1)

Barva pozadí v buňce

Jak zjistit jakou barvu má pozadí v buňce.

CellColor = Cells(1, 1).Interior.ColorIndex MsgBox CellColor
CellColor = Cells(1, 1).Interior.ColorIndex MsgBox CellColor

Počet buněk určité barvy

Jak zjistit kolik buněk v dané oblasti má požadovanou barvu.

For a = 1 To 10 Step 1 If Cells(a, 1).Interior.ColorIndex = 3 Then ColorPočet = ColorPočet + 1 End If Next a MsgBox ColorPočet

Počet shodný buněk s pozadím dané buňky

Potřebujeme spočítat počet buněk v zadané oblasti, které mají shodné pozadí jako buŇka A1.

CellColor = Cells(1, 1).Interior.ColorIndex For A = 1 To 10 Step 1 If Cells(A, 1).Interior.ColorIndex = CellColor Then ColorPočet = ColorPočet + 1 End If Next A MsgBox ColorPočet

Poznámka

Další kódy v přípravě

Závěrem

Pokud máte zajímavý kód o který se chcete podělit, můžete zapsat do komentářů.

Článek byl aktualizován: 01.11.2014 14:13

Odměna

Ušetřil vám tento web čas, peníze? Pomohl vyřešit problém? Jste ochotni poskytnout symbolickou odměnu na další rozvoj? Vybrte si formu odměny, která vám vyhovuje.


Pavel Lasák

Pavel Lasák - autor webu

Microsoft Office (Word, Excel, PowerPoint) se věnuji od roku 2006. Své vědomosti a zkušenosti dávám k dispozici na různých školeních a konzultacích, ale také na tomto webu. K dispozici na tomto webu je mnoho návodu, tipů a triků včetně desítek různých šablon.

   Pavel Lasák LinkedIn Profil    Pavel Lasák Google+ Profil    Pavel Lasák facebook Profil    Pavel Lasák twitter Profil

Doporučte tento článek přátelům

Pokud vám článek pomohl, případně si myslíte, že může pomoci i někomu dalšímu, budu rád když jej sdílením doporučíte přátelům - děkuji:



Komentáře


Migi

Přidáno: 04.01.14 17:06

Tohle secte hodnoty v bunkach, ktere maji shodnou barvu :) Function soucetbunekstejnebarvy(Rng As Range, RngColor As Range) As Integer Dim Bunky As Range Dim Barva As Long Dim pocet As Integer pocet = 0 Barva = RngColor.Range("A1").Interior.Color For Each Bunky In Rng If Bunky.Interior.Color = Barva Then soucetbunekstejnebarvy = Bunky.Value + soucetbunekstejnebarvy End If Next Bunky End Function

Pavel Lasák

Přidáno: 27.07.14 06:57

To Migi: Díky za doplnění zajímavého a užitečného kódu.

Lukas

Přidáno: 16.09.14 14:19

Udelal sem malou modifikaci vyse zmineneho kodu. Takze treba nekdo hleda neco podobneho, a tak mu to muze pomoct. Jsou to funkce na spocitani barevneho pozadi a barvy fontu podle zadane bunky (rWhatColor). s tim ze se to vykovana na "zvolenem" listu (SheetTarget) "zvoleneho" sesitu (WBName). Function CountInteriorColor(WBName As String, SheetTarget as String, rWhatColor As Range) As Integer Dim LastFullColumn, LastFullRow As Integer Dim rCells, rRange As Range Dim CellColor As Long 'init Workbooks(WBName).Worksheets(SheetTarget).Activate LastFullRow = Workbooks(WBName).Worksheets(SheetTarget).Cells(Rows.Count, 1).End(xlUp).Row Set rRange = Range(Cells(2, 1), Cells(LastFullRow, 1)) CellColor = rWhatColor.Interior.Color For Each rCells In rRange If rCells.Interior.Color = CellColor Then CountInteriorColor = CountInteriorColor + 1 End If Next rCells End Function Function CountFontColor(WBName As String, SheetTarget as String, rWhatColor As Range) As Integer Dim LastFullRow As Integer Dim rCells, rRange As Range Dim CellColor As Long 'init Workbooks(WBName).Worksheets(SheetTarget).Activate LastFullRow = Workbooks(WBName).Worksheets(SheetTarget).Cells(Rows.Count, 1).End(xlUp).Row Set rRange = Range(Cells(2, 1), Cells(LastFullRow, 1)) CellColor = rWhatColor.Font.ColorIndex For Each rCells In rRange If rCells.Font.ColorIndex = CellColor Then CountFontColor = CountFontColor + 1 End If Next rCells End Function

MilanN

Přidáno: 21.09.15 08:17

Ahoj, můžeš mi prosím někdo poradit ? Mám jeden jednoduchý zdrojový sešit , který se mi generuj z webu a má hodnoty jen ve sloupci A. Někdy jsou vyplněny třeba jen 3 buňky jindy třeba 60. Druhý cílový sešit je připravený se vzorci a já potřebuji do jeho sloupce A přidat buňky ze zdrojového sešitu ze sloupce A. Říkal jsem si, že není nic jednoduššího, ale narazil jsem. Já to zkrátka nedokážu. Potřeboval aby ty buňky se do cílového sešitu přidávaly, protože jich je pokaždé jiný počet a kdybych třeba kopíroval víc buněk, narazil bych na konec sloupce, kde mám vzorec pro součet. Já jsem zatím dokázal jen tohle: Workbooks.Open Filename:=Environ("TEMP") & "\Rozpis.xls" 'sem se zapíše sešit vygenerovaný z webu a otevřu ho. Workbooks("Rozpis.xls").Sheets("Rozpis").Select 'tady ho vyberu pocradku = Workbooks("Rozpis.xls").Sheets("Rozpis").Cells(Rows.Count, "A").End(xlUp).Row 'tady si najdu kolik buněk se bude kopírovat Můžeš mi tedy prosím poradit co dál ? Díky

JB

Přidáno: 11.01.16 17:21

Ahoj, mohu poprosit o radu, jak tu funkci "SpoctiBarvuPozadi" modifikovat, aby spočítala i barvu buňky určenou podmíňěným formátováním? děkuji JB


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

Poznámka: Z časových důvodu není v mých sílách zodpovědět všechny dotazy. Děkuji za pochopení.




(vlož číslo padesátpět)

Z bezpečnostních důvodu dočasně nemůžete použít HTML značky, kromě <code> a </code> (pro vkládání VBA kódu). 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. V komentářích si tykáme. ;-)






Sdílejte

Pomohl Vám návod?
Sdílejte na Facebooku, G+
LinkedIn...

Nové články


Newsletter

Přihlaste se odběru novinek a získejte:
Ebook zdarma -
10 kroků ke zvládnutí (Word, Excel, PowerPoint)
Šipka Kniha 3D Více o ebooku ...

TOPlist Licence Creative Commons webarchiv rss XML

Stránky o MS Office (Excel) produktu společnosti Microsoft. Neslouží jako technická podpora.
| Email na autora: pavel.lasak@gmail.com | Copyright © : Pavel Lasák 2004 - 2016 | 11357

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