

súčet v excel-i
Ahoj,
potrebujem poradiť s takýmto problémom v Excel-i.
V bunkách A1 až A10 mám čísla. Niektoré majú červené písmo a niektoré čierne. V bunke B1 potrebujem sčítať všetky čísla s červeným písmom a v bunke C1 zas potrebujem sčítať čísla s čiernym písmom.
Ďakujem
excel není omalovánka, přece jen slouží k něčemu jinému. já bych chápal, že ta barva písma v buňce proto není náhodou co se komu chtělo obarvovat, ale výsledek nějaké podmínky - viz v menu "podmínečné formátování", sám to občas používám.
a stejnou podmínku, která způsobí omalování některých buněk, bych taky testoval pro ty součty. něco jako že sčítám sloupec hodnot, ve kterém je: (buňka1*platnost(podmínka1)) + (buňka2 * platnost(podmínka2)) + ...
na syntaxi se mrkni do helpu, já to potřebuju jednou za půl roku tak to tam vždycky znovu objevuju.
ale jestli fak testuješ jen barvy, to je jiná. sice to nemá smysl, ale jde to zadávat za domácí úkol.
Ahoj,
otázku som veľmi zjednodušil, excel rozhodne nepoužívam ako omaľovánku a priznám sa, že som očakával skôr odbornejšiu odpoveď, kecať o farebných obrázkoch sa dá určite inde. Nižšie popísané som už skúšal, aj som predpokladal, že sa to bude dať riešiť len makrom, ale vyhýbal som sa tomu, pretože makro je pre mňa španielska dedina. Štandardné funkcie to ale asi nezvládnu.
Vďaka
Ak Excel nepoužívaš ako omaľovánku, tak sa to dá riešiť aj bez makra.
Počítať v Exceli čokoľvek na základe farby buniek ide len pomocou makra - s jednoduchým vzorcom si nevystačíš.
Používať farebné odlíšenie buniek ako nosič novej informácie je vo všeobecnosti z praktických dôvodov vysoko neodporúčané.
Navic je nutno vzit do uvahy, ze zmena barvy podminenym formatovanim neni zjistitelna, vlastnost Interior.ColorIndex vraci puvodni hodnotu!
je to jednoduchý, makrem bez problémů:
(15 minut - píšu pomalu)
EDIT:// hodnoty proměnných "cervena" a "cerna" musíš definovat podle použitých barev.
ahoj Mia,

ďakujem, je to super, ale ja mám takých stĺpcov v hárku 52 po 1000 riadkov. Ako do makra zapíšem začiatok a koniec, keď sú to bunky T10 až T1010.
vďaka, ahoj
PS. Zatiaľ to pokazené nie je - ale keď musíš, tak musíš a na niečo zomrieť musíme
Jednoduše, v cyklu For n=xx to yy se dosadí počáteční a koncová buňka a v parametru Range("ZZ" & n) znamená písmeno v uvozovkách sloupec. Ten znak "&" znamená zkombinovat do jednoho řetězce, tzn když písmeno je "AB" a n=20, vznikne z toho "AB20". V posledních dvou řádcích makra definuješ, do které buňky se součty zapisují.
Ďalšou možnosťou je prejsť bunky pomocou cyklu For Each, napr:
Ahoj, ako toto zopakujem 52 krát, s tým, že výsledky budú v "F3" a F4", "I3" a "I4"...:
V Exceli si môžeš definovať vo VBA vlastnú funkciu, ktorá sa dá potom používať priamo vo vzorci rovnako ako štandardné funkcie: Create your own worksheet functions
Stále si nenapísal, na základe čoho sa farbia jednotlivé bunky. Je to na základe podmieneného formátovania, alebo to niekto musí ručne nastavovať? Ak je to ten druhý prípad, tak si rozmysli, či to nechceš zmeniť - hlavne v prípade, že ten súbor nepoužívaš len ty sám.
Rozumim-li dobre pozadavku, tak zde je trochu ucesana procedura scitajici hodnoty ze sloupcu B7:B1000 (E7:E1000, H7:H1000,...) az 52 krat a ukladajici soucty do bunek dle barvy fontu - cerna do C3 a cervena do C4 (F3:F4, I3:I4,...).
Doplnuji:
Barva je brana pro zakladni barvu fontu, pokud by bylo potreba rozlisovat podle barvy nastavene podminenym formatem, pak je nutno pouzit tytez podminky do procedury a misto c.Font.Color pouzit c.Value=podminka!
asi som to zle vysvetlil,
v "B3" potrebujem sčítať hodnotu "čiernych (automatická farba)" čísel zo stĺpca "B7-B1000" a v "B4" zas hodnotu "čiernych" čísel zo stĺpca "C7-C1000" - toto všetko opakovať 52 krát. (Cash-flow, čierne písmo - už uskutočnené, červené písmo - plánované, stĺpec B - príjmy za 1 týždeň, stĺpec C - výdavky za 1 týždeň...)
A poprosím Ťa aj krátke vysvetlenie k riadkom, nech to aj pochopím, nie odpíšem.
Vďaka
Tady je upravena procedura:
Pokud splnuje pozadovane, tak upravim pro zrychleni behu.
funguje to perfektne, niečo som odtiaľ vyhodil - aby to zbytočne nevytváralo hlavičky (som myslel kôli zrýchleniu prepočtu), takže, ak sa to dá ešte nejako upraviť, tak Ťa poprosím. Ale už aj tak je to OK.
Zrychleni spociva v tom. ze budou scitany pouze hodnoty z neprazdnych bunek ve sloupcich (t.j. nebude se prochazet radek 7 - 1000) , vlozeni hlavicek je to nejmensi. Pokud je v nasledujici procedure nepotrebujes, vloz znak "'" (apostrof) na zacatky radku s vkladanim hlavicek (v procedure oznaceno).
potrebna funkce LastRow je v dalsim prispevku, nebot je omezena delka prispevku
Pokracovani k predchozimu prispevku, pripoj za proceduru Scitat:
S odstupem casu lze pozadovane resit bez makra a to vyuzitim maleho triku.
V bloku bunek B1:B1000 (C1:C1000) nastavit barvu fontu na automaticku a nastavit format bunek na cislo, pro zaporna cisla vybrat barvu cervena bez znamenka. Planovane prijmy (vydani) vkladat jako zaporne cislo, ktere bude zobrazeno jako cervene pismo bez znamenka.
Pro soucet v B3 pouzit vzorec: =SUMIF(B7:B1000;">0") a obdobne pro B4:=SUMIF(C7:C1000;">0")
Toto zopakovat pro dalsich 51 tydnu.
Pozn: poradna vlozila nekam jinam, nez jsem zamyslel
vyhadzuje mi to chybu v riadku:
PoslRadek = LastRow("Makro", ofs * i)
a je zvýraznené "LastRow"
Pro zjisteni duvodu chyby uved i chybove hlaseni, takhle byt na dalku, tezko zjistim pricinu.
Jen pro overeni, mas doinstalovanu funkci LastRow?
Predavas spravny nazev listu?
Zkusils krokovat proceduru (Editor VBA: Nastroje>View>LocalsWindow, kurzor mysi na proceduru a krokovat tlacitkem F8)?
Pouzivas jakou verzi Excelu?
Ďakujem Ti, teraz to už funguje super
psal jsem uz vcera, ale nejak se odpoved zasmodrchala mezi starsi, takze ji opakuji:
Pozadovane lze resit i bez makra a to vyuzitim maleho triku.
V bloku bunek B1:B1000 (C1:C1000) nastavit barvu fontu na automaticku a nastavit format bunek na cislo, pro zaporna cisla vybrat barvu cervena bez znamenka. Planovane prijmy (vydani) vkladat jako zaporne cislo, ktere bude zobrazeno jako cervene pismo bez znamenka.
Pro soucet v B3 pouzit vzorec: =SUMIF(B7:B1000;">0") a obdobne pro B4:=SUMIF(C7:C1000;">0")
Toto zopakovat pro dalsich 51 tydnu.
upravena verze bez funkce LastRow, nazev listu je na zacatku subrutiny v promenne List
som tu chvilu nebol, ale vdaka, je to ok a prijemne sviatky