< návrat zpět

MS Excel


Téma: VBA - Sumif rss

Zaslal/a 20.12.2016 16:06

Zdravím, nevím si rady.
Do práce potřebuju udělat jednoduchou evidenci zmetkovitosti. Zkráceně, mám určitý seznam zaměstnanců a firem. Na úvodním listu kliknu na seznam, vyberu jméno zaměstnance, poté na druhý seznam v další buňce na seznam firem. Vyplním počet zmetků.
Kliknu na tlačítko s jednoduchým makrem "uložit" tím se mi přidá nový list s vyplněným obsahem předešlého úvodního listu.
Dále mám list "přehled". Zde bych rád jednoduše vybral zaměstnance ze seznamu a viděl v buňce sečtený počet zmetků co kdy udělal.
Zde vzniká problém se vzorcem.
=součin.skalární(nepřímý.odkaz(sumif.......
vzorec funguje, v seznamu vyberu zaměstnance jako podmínku, podtrženo sečteno, vidím celkový počet zmetků. ALE, jakmile uložím nový list, ten už ve vzorci zahrnutý není a musím přidávat ručně - to nechci.
Pokračoval jsem dále přes VBA. Nastavil jsem at se mi každý nový list ukládá s názvem pouze holého čísla (1;2;3;4;5...) poté napsal vzorec pro sumif, do závorek vložil proměnnou pro všechny listy.

Kliknu na tlačítko, vypíše se mi vzorec, ale bez "="
když tam "=" dopíšu potom ručně, vzorec funguje. Ale jakmile "=" dopíšu do vzorce ve VBA, vzorec se stane neaktivní.
Je tu někdo ochotný mi poradit? Vím, že to není žádná námaha, tam rovná se dopisovat růčo, ale přece jen bych rád, aby to nějak vypadalo. Navíc bych se aspoň posunul dál a věděl bych pro příště, děkuji :-)

Zaslat odpověď >

Strana:  « předchozí  1 2 3   další »
#033984
avatar
No, ale to je právě přesně to, co od začátku řeším, proto jsem se ten skalární součin snažil převést do VBA. Nastavil jsem si proměnnou "t" která mi při každém novém přidání listu vypíše aktuální seznam listů (1;2;3;4;5...).
proměnnou "t" jsem dosadil do vzorce se skalárním součinem. Vzorec fungoval, v podstatě. Proměnná "t" se mi do něj vypsala, ale bohužel v buňce se mi místo výsledku zobrazil vypsaný vzorec. Stačilo by po každém novém listu dopsat před vzorec "=" a vše by šlapalo, ale kvůli vzhledu to tak mít nemůžu. V podstatě jsem teď nic nového nenapsal, vše jsem napsal hned v prvním příspěvku.

Jednodušše potřebuji funkci SUMIF který bude zahrnovat ještě neexistující buňky...

Teď mě ještě napadá, že by fungovat mohl, pokud bych si vytvořil např. 1000 prázdných listů, do vzorce bych zahrnul rozmezí {1;1000}, ale nevím jak ve VBA napsat, aby při každém dalším kliknutí na tlačítko, se předloha uložila do dalšího následujícího prázdného listu..citovat
#033986
avatar
A musí to byť cez VBA? Funkcia SUM(česky SUMA) robí súčet cez viac listov =SUM(Hárok1:Hárok100!A1)
Tak si do A1(alebo ľubovoľnej inej) zadaj príslušné hodnoty cez IF.

No bez prílohy ani ťuk.citovat
icon #033987
avatar
Ten vzorec pre skalárny súčin sa, čo sa týka počtu listov, meniť nemusí. Stačí, aby sa odkazoval na pomenovanú oblasť, ktorou môže byť objekt tabuľka, v ktorej si budeš musieť udržiavať zoznam listov. Takže vo VBA prestaneš riešiť úpravu vzorca so skalárnym súčinom, miesto toho si cez VBA budeš pridávať do zoznamu v tabuľke názvy novo pridávaných listov.
Ale šéf si ty, ja len píšem, ako by som prípadne postupoval ja, keby som to musel riešiť.
Btw, príloha, ktorú si sem dal, žiadny kód, ktorý by vytváral nejaký vzorec, neobsahuje..citovat
#033990
avatar
Nemyslím to špatně samozřejmě :D Šéf jsem tu já, ale taky jsem to já, kdo potřebuje poradit..

Marjankaj: Suma byla to první, co jsem zkoušel, ale problém je v tom, že neobsahuje podmínku, což je pro mě jedna ze dvou nejdůležitějších věcí, kvůli vyfiltrování daného člověka. Nejlepší by pro mě byla kombinace Sum&sumif :D
=sumif((List1:List1000!A1);"Petr";(List1:List1000!A2), ale bohužel. Obě funkce mají věc co potřebuji, ale žádná nemá obě :D jednoduchou přílohu jsem předkládal na konci 1. strany.

AL: Já jsem pro každou možnost, VBA pro mě bylo jediným řešením co mě napadlo, myslel jsem si, že v něm jde udělat cokoliv, jen díky tomu, že ho neznám a nevím jak se správně používá, jsem pouze kopíroval z internetu a následně upravoval, když už jsem byl v nouzi, tak jsem se zeptal zde. Takže pokud je řešení přes tabulku, rád ho zkusím. Sice nevím zatím jak, ale zítra to v práci zkusím rozlousknout, dneska už jsem KO :D
PS. ta příloha byla čistě pro pochopení problematiky. Kód jsem tam nedával právě proto, že je mi v podstatě jedno jak se k výsledku dohrabu, hlavně že výsledek bude a bude funkční, proto když jsi psal možnost s rozsahem A:B, tak jsem ho hned zkoušel, bohužel to bylo řešení pro čistou SUMU, pokud jsem správně pochopil..citovat
icon #033991
avatar
Ja som si práve neuvedomil, že pracuješ s tým skalárnym súčinom, kedy ten rozsah A-B nefunguje. Takže, buď cez tabuľku, alebo vo VBA tvoriť ten vzorec s premennou obsahujúcou tú maticovú konštantu (zoznam listov). Keby si sem dal príklad, v ktorom tvoríš vo VBA ten vzorec a píšeš, že je tam nejaký problém so znamienkom =, asi by sa na to dalo tiež pozrieť, v čom je problém..citovat
#033992
avatar
Ok, zítra vezmu soubor co mám v Pc v práci, trošku ho promažu, poněvadž tam mám spousty věcí navíc, co jsem si jen tak zkoušel, a nahraju ho sem. Myslím, že na první pohled uvidíš, co je tam špatně. Za mě osobně, tam určitě bude špatně nějaká definice proměnné apod. Princip celkem chápu, v podstatě je to jenom matematika, ale neznám k čemu jaký znak slouží, co kde musí být atd... Každopádně, chtěl bych poděkovat za ochotu ;)citovat
icon #033993
avatar
Myslím, že ten zápis vzorca cez VBA som vyriešil. Skús toto:Sub WriteFormula()
Dim i As Byte, ListArray As String
ListArray = "{"
For i = 4 To Sheets.Count
ListArray = ListArray & """" & Sheets(i).Name & """;"
Next i
ListArray = Left(ListArray, Len(ListArray) - 1) & "}"
Sheets("GRAF").[B4:B6].Formula = "=SUMPRODUCT(SUMIF(INDIRECT(""'""& " & ListArray & " &""'!""&""B1""), A4 ,INDIRECT(""'""& " & ListArray & " &""'!""&""B2"")))"
End Sub
- zapisuje vzorce do buniek B4-B6 na liste graf.citovat
#033995
avatar
Tak, jedna "špatná" zpráva a jedna DOBRÁ zpráva :D
špatná = špatně jsi mě pochopil
dobrá = stačilo přepsat dva odkazy buněk a je to přesně to, co potřebuju!! V práci už si to přepíšu přesně tak, jak potřebuju, ale to už je jen pár písmenek, jde mi o ten vzorec, ten je hlavní.
Přes svátky to dodělám a potom ti pošlu výsledek. Z toho 1) uvidíš, co přesně jsem potřeboval a za 2) třeba se ti to do budoucna bude hodit jako šablona, pro nějaký blázna podobnýho mě. Za pár dní jsem zpět s výsledkem.
Děkuju ti za tvůj čas a za ochotu, karma level up :-)citovat
icon #033996
avatar
Je otázka, ktorú verziu si použil, postupne som to vyladil a to, čo som tam nechal teraz, by malo byť funkčné. Ale je možné, že som to špatne pochopil. Pokiaľ ti to ale napriek tomu pomohlo, tak je to fajn. Posielať mi nič nemusíš, toto určite nepoužijem, ako som zmienil, ja osobne by som to riešil cez pomocný zoznam.citovat
#033998
avatar
No to bude žůžo hledat mezi tisíci listy ten, který potřebuji vytisknout.citovat

Strana:  « předchozí  1 2 3   další »

Uživatelské menu

Nejste přihlášen(a)
avatar\n

Menu

Formulář Faktura

Formulář Faktura IV

Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.

Helios iNuvio

Používáte podnikový systém Helios iNuvio? Potřebujete pomoci se správou nebo vyvinout SQL proceduru? Více informací naleznete na stránce Helios iNuvio.

On-line nástroje