image/svg+xml

» Poradna » Programy

Vba Excel - hledání na základě formátu písma

 | Microsoft Windows 10 IE 11.0

Dobrý den, prosím poraďte mi, dá se přes vba v excelu hledat podle formátování textu? Mám tabulku, ve které je pokaždé jiný počet řádků. V této tabulce jsou vytvořeny subkapitoly. Každá taková subkapitola má na začátku řádek se sumou, který je odlišen jinou barvou a velikostí textu. Všechny tyto subkapitoly pak jsou ještě společně sečteny do jedné sumy na začátku celé tabulky v samotném řádku, který má ještě o něco větší písmo, ale stejnou barvu. Chci si vytvořit makro, které by automaticky vyplnilo vzorec se sumou pro jednotlivé subkapitoly a pak sumu všech subkapitol, ale nenapadá mě, jak vba říct, podle čeho má zjistit číslo řádků, kde se tyto sumy budou nacházet. Napadá někoho, jak se dá toto vyřešit? Děkuji

Mohlo by vás také zajímat

Odpovědi na otázku

 | Microsoft Windows 10 IE 11.0

Pokud to správně chápu, tak to, co tam popisují pod tímto odkazem, je jen, jak nastavit velikost písma. Já ale potřebuji najít řádek, kde je text o určité velikosti, případně barvě. Nepotřebuji měnit font, ten už je v tabulce daný.

Souhlasím  |  Nesouhlasím
 | Microsoft Windows 7 Chrome 66.0.5192.0

Je to vlastnost. Dá se ne jen zapisovat, ale samozřejmě i číst. Tedy zjistíte tím velikost písma, tedy to podle čeho chcete hledat. (obdobně zjistíte barvu, tučnost, kurzívu, ... cokoli).Jestli máte představu, že existuje nějaká zázračná formule na jeden řádek, co by sama o sobě prohledala tabulku dle takového docela abstraktního zadání, tak vás zklamu. Budete si muset napsat algoritmus který bude tabulku procházet a buňky porovnávat s pravidly která nastavíte (což budete ověřovat právě pomocí čtení vlastnosti jak jsem poslal v odkaze).Obávám se, že jestli vám unikají tak elementární věci, jako je práce s vlastnostmi buňky, tak napsání vámi zmíněného makra je nad vaše síly a jakékoli rady jsou zbytečné. Asi nejdříve začněte s něčím jednodušším, ujasněte si co a jak funguje, a pak se vraťte k tomuto.

Souhlasím  |  Nesouhlasím
 |   |  Microsoft Windows XP Mozilla 38.9

Jediné, co napadlo mě: Proč zpracovává text v Excelu? V popisu tabulek a sčítaných subkapitol se sumou se bez křišťálové koule nechytám.

Souhlasím  |  Nesouhlasím
 |   |  Microsoft Windows 7 Chrome 66.0.3359.117

Nejde o subkapitoly ve smyslu textu, ale domnívám se ve smyslu nějaké kalkulace (cenová nabídka, účetnictví, projektové náklady apod.) tzn na začátku celková suma a pod tím jednotlivé položky a jejich rozpis.

Souhlasím  |  Nesouhlasím
avatar
 | Microsoft Windows 10 Chrome 65.0.3325.181

Sice nie som si isty, co presne chces, ale tu je priklad jednoducheho makra, ktory mozno pomoze pri rieseni.Je to makro, ktore vytvori celkovy vzorec suctu jednotlivych subkapitol.Makro na sucty subkapitol by bolo asi trochu zlozitejsie.Nie je optimalizovane, nema vychytane chyby, ktore mozu nastat, takze ho treba brat s rezervou.Makro do bunky A1 vlozi vzorec suctu subkapitol v bunkach A2 az po posledny riadok (ten je zadany dynamicky - lngPoslednyRiadok, kedze je pocet riadkov vzdy iny).Vzorec vytvori len z buniek, ktore splnaju podmienky:- velkost pisma 14- tucne pismo- farba bunky zelena - RGB(0,255,0)Sub Sucet() Dim lngPoslednyRiadok As Long Dim i As Long Dim strRozsahSuctu As String Let lngPoslednyRiadok = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row Let strRozsahSuctu = "" For i = 2 To lngPoslednyRiadok If ActiveSheet.Cells(i, 1).Font.Size = 14 And ActiveSheet.Cells(i, 1).Font.Bold = True _ And ActiveSheet.Cells(i, 1).Font.Color = RGB(0, 255, 0) Then strRozsahSuctu = strRozsahSuctu & "A" & i & "+" End If Next i On Error Resume Next ActiveSheet.Cells(1, 1) = "=" & Mid(strRozsahSuctu, 1, Len(strRozsahSuctu) - 1)End Sub

Souhlasím  |  Nesouhlasím
avatar
 | Microsoft Windows 10 Chrome 65.0.3325.181

mala oprava:*- farba pisma je zelena - RGB(0,255,0)

Souhlasím  |  Nesouhlasím
 | Microsoft Windows 10 IE 11.0

Díky za pomoc, s vyřešením odpovědi k původnímu dotazu jsem si už poradil, teď ale přemýšlím nad jiným problémem. Pokusím se to tu ukázat obrazně. Tabulka vypadá tímto způsobem:1 - Nadpis1 (vel. 11, barva modrá, tučné) - součet Nadpisů22 - Nadpis2 (vel. 10, barva modrá, tučné) - subkapitola, zde chci SUMA(3:7)3 - řádek tab. (vel. 8, barva černá)4 - řádek tab. (vel. 8, barva černá)5 - ...6 - ...7 - Nadpis2 (vel. 10, barva modrá, tučné) - další subkapitola, SUMA(8:10)8 - řádek tab. (vel. 8, barva černá)9 - řádek tab. (vel. 8, barva černá)10 - ...Konec tabulkyProblém mám teď v tom, že do Nadpisu2 chci zapsat vzorec sumy řádků pod nadpisem2 po další nadpis2. Napsal jsem si cyklus, který prochází řádek po řádku a když najde odpovídající buňku dle podmínky na velikost písma a barvu, vzorec zapíše. Jak ale z cyklu dostat dvě proměnné? Nějaký další vnořený cyklus? Začátek sumy je daný, to je i+1, ale konec sumy takto nezjistím

Souhlasím  |  Nesouhlasím
 |   |  Microsoft Windows 10 Firefox 59.0

Proč tak složitě přes makra?Vytváření souhrnů a seskupování řádků zvládá přece samotný Excel: https://support.office.com/cs-cz/article/vytvo%C5%99... Případně: http://office.lasakovi.com/excel/data/souhrny-excel/

Souhlasím  |  Nesouhlasím
 | Microsoft Windows 10 IE 11.0

Jde o to, že těchto tabulek vygeneruji z kalkulačního programu za měsíc několik a jsou vždy bez vzorců. Chtěl jsem způsob, jak jednoduše jedním klikem automaticky vzorce doplním a vzhledem k tomu, že pokaždé má tabulka jiný počet řádku i nadpisů, nejjednodušší to je přes makra.

Souhlasím  |  Nesouhlasím
 | Microsoft Windows 10 Chrome 65.0.3325.181

Chápu to správně, že si programujete vlastní funkci Subtotal?

Souhlasím  |  Nesouhlasím
 | Microsoft Windows 10 IE 11.0

Tak už jsem to vyřešil, postačí vnořený cyklus, jak jsem psal výše. Děkuji všem za pomoc, i tomu, který si myslel, že něco takového nemám šanci vymyslet... Makry se zabývám teprve měsíc po chvilkách volna v práci a postupně zjišťuju, jak jde všechno dělat, proto jsem položil tento dotaz. Nebylo nutné se do mě hned navážet, když jsem z přiloženého odkazu hned nepochopil, co se mi autor snaží říct...

Souhlasím  |  Nesouhlasím
 |   |  Microsoft Windows 7 Chrome 66.0.3359.117

Zdravím, hodně záleží na několika faktorech, - počet úrovní zda je pevně daný nebo proměnlivý- zda chceš do polí součtů vzorce nebo hodnoty - při použití vzorců se sumy přepočítají automaticky, u hodnot je třeba opět spustit to makropostup:- najít poslední řádek *- uložit si číslo řádku, barvu a velikost fontu- jít po řádkách nahoru dokud nenarazíš na změnu barvy nebo velikosti fontu- do rozdílné řádky vložit vzorec "=suma(sloupec & předchozi radka : sloupec & uložené číslo řádky)" - pozor musí to být správně naformátováno- do proměnné string pro celkovou sumu přidat "+ sloupec & radka" - jít o řádku výš - pokud je písmo menší opakovat od *pokud je větší se základní barvou je to hlavní součet doplnit string se vzorečkem pro celkovou sumu

Souhlasím  |  Nesouhlasím
 |   |  Microsoft Windows 7 Chrome 66.0.3359.117

drobnost ve 4. řádce postupu mám ve vzorečku předchozí řádka - podle toho jak je ten cyklus stavěný, že jede od konce je to v podstatě ta řádka pod aktuální řádkou se sumou.- koukal jsem žes to už vyřešil - vnořený cyklus nepotřebuješ stačí si zapamatovat řádku posledního Nadpisu2 a jet dál než narazíš na další nadpis nebo konec, na pozici zapanatovaného Nadpisu2, pak vložíš sumu od následující řádky po řádku před novým nadpisem/koncemJinak já ted dávám do kupy složitější věc, formulář kde si uživatel bude moci pomocí drag&drop naformátovat výstup dat z propojené DB a to včetně rozměrů

Souhlasím  |  Nesouhlasím
 | Microsoft Windows 10 IE 11.0

Jakým způsobem se dělá to, aby si pamatoval, který řádek byl nadpis2? To jak to popisuješ, že deš řádek po řádku, jedná se předpokládám o cyklus, je to tak? Jak se v cyklu zapamatuje hodnota, když operuji s proměnou, která se při každém cyklu o 1 navýší?

Souhlasím  |  Nesouhlasím
 |   |  Microsoft Windows 10 Firefox 59.0

Jak? Jednoduše - vložíš ji do jiné proměnné Dim i as integer ' Proměnná pro cyklusDim iMem as integer ' Pamatovák pozicefor i= <start> to <end> do ... if <podmínka> then iMem = i endif...next iZačínáš-li s VBA v Excelu, neznám lepší web: http://office.lasakovi.com/excel/vba-teorie-zaklady/

Souhlasím  |  Nesouhlasím