Ak by ste chcel načítať plnú tabuľku dát z ext súboru, tak by som doporučil toto.
Považujme teda D6 za odkaz na ľavú-hornú bunku dát v zošitoch. Makro sa spustí pri zmene mesiaca alebo roku. Berie údaj o adresári so zošitmi z bunky F41.
A ak by ste mala záujem o to makro, tak tu je. Kopíruje celé polia naraz, je to veľmi rýchle. Nevšíma si iba list s názvom "Spolu", ale ak chcete aby si nevšímal aj iné listy, tak doplním do makra ešte jednu funkciu. Pracuje iba s hodnotami, a bez medzier. Aktualizácia dát prebehne kliknutím na tlačítko Aktualizovať. Jednoduché.
PS: Ale raz sa tie SQL budem musieť naučiť
Takto ?
Ak sa Vám črtá nejaké riešenie, mám sa tomu ešte vôbec venovať? Nemám totiž v týchto dňoch vôbec čas, a od vtedy čo som postol návrh som okolo toho ani nešiel.
Takto je to tiež urobené tak, aby na každej brigáde boli dostupné iba mená, ktoré sú reálne dostupné podľa nastavenia pri každom mene, že kedy kto môže. Funguje aj upozorňovanie na to, ak už niekto z validných mien je v daný deň na inej brigáde. Všetko OK, do momentu, keď si to niekto rozmyslí, zavolá Vám, že v nejaký deň nemôže, vy ho pri jeho mene odškrtnete na daný deň, samozrejme sa aktualizujú zoznamy dostupnosti ľudí, a nastane pohroma, pretože v tých listoch kde figuroval ako dostupný sa všetko posunie. Čiže ak škrtneme prvého dostupného na nejaký deň, tak zaškrtávacie políčka v listoch brigád ostanú neposunuté = budú ukazovať na iné meno. Nejdem to teraz skúšať, ale myslím, že zaškrtnutie CB nevyvolá OnChange. Takže ďalší problém. Rozbalovacie zoznamy to v tomto stave nevyriešia, dynamicky nevymaže totiž neplatnú hodnotu.
Neviem, budem si to musieť celé znovu premyslieť, ale už sa mi s tým prestáva chcieť piplať... no uvidíme.
To bude podstatne zložitejšie. Ide o to, že sa musí kontrolovať, ktorí ľudia sú na aký dátum dostupní. Ďalej sa musí kontrolovať či sú títo dostupní ľudia už v niektorom liste (neznámy počet aj názvy) zapísaný na brigádu, okrem listu samotného v ktorom práve ste. A v jeden deň môže byť viac brigád, teda sa nesmie zo zoznamu dostupných ľudí prihlásený na jednu brigádu vymazať, lebo môže byť aj na inú prihlásený v ten istý deň. Najjednoduchšie by to bolo asi makrom celé riešiť. Zatiaľ sa snažím čo najviac vykryť vzorcami, ale prestáva sa mi to pomaly páčiť. Práve riešim tú kontrolu v iných zošitoch.
Bez kombinácie makro-vzorec sa to neobíde. Aspoň zisťovanie listov musí urobiť makro, a vytváranie nových listov brigád tiež.
EDIT: Moja prvá rozpracovaná (!) verzia.
COUNTA nieje vhodný. Započíta totiž do rozsahu aj vzorec vracajúci "", a to nieje vždy vhodné. Preto používam buď použitý výpočet COLUMNS(3:3)-COUNTBLANK(3:3) alebo COUNTIF(A:A;"<>"&"").
Nepočítate s tým, že by užívateľ mohol dopísať nejaký údaj do riadkov nad tabuľkou. Takže tam nemusí byť práve 1 voľný riadok na pripočítanie. Z rovnakého dôvodu nemôžete použiť spomínaný Suma(H:H).
Ďalej som sa vyhýbal INDIRECT. Pôvodne som sa chcel vyhnúť aj OFFSET, to sa mi žiaľ nepodarilo.
Definované názvy som nepoužil, z dôvodu (ne)fungovania na tabletoch. Na mojom dostanem chybu #NAME. Inak sú samozrejme Názvy podstatným zjednodušením.
Netuším, prečo má Strikeman prvú položku prázdnu, ak sa tam budú také vyskytovať, je to ďalší problém.
Dobrý nápad je aj korekcia počtu zrátavaných stĺpcov keď je <3 dátových, inak to bude hádzať chybu.
Interpretácia riešenia problému vzorcom vždy závisí na drobnostiach. A zrovna zisťovanie poslednej zapísanej položky (stĺpec/riadok) vzorcom je ukážkový príklad.
Uvidíme čo napíše Strikeman. Nejaké upresnenia umiestnenia súčtov, či spôsobu zadávania dát by neboli na škodu.
PS: Ja inak milujem krátke vzorce, pretože dlhé nie sú User Friendly, ale ťažko sa nimi rieši problém komplexne s rôznymi možnými eventualitami.
EDIT:
@Opičák : No prosím, ďalšia správna poznámka, že každý tovar môže mať posledné 3 mesiace iné. Ďalšia komplikácia a ďalšie varenie z vody. Aby sme z vody nevarili potrebujeme odozvu od zadávateľa.
Pozrite si toto. Je tam skrytý pomocný vyhodnocovací stĺpec H. Ak bude nespárovaný piatok na začiatku alebo pondelok na konci, tak ich samozrejme logicky nezapočíta.
Tie Vaše "čísla" sú text, a tak som Vám tam dal aj príklad prevodu na korektné čísla - to len na margo, počítanie v H funguje aj na vašich "textových číslach".
Ten vzorec je totálne neprehľadný práve kvôli svojmu umiestneniu vzhľadom na tabuľku. Musí sa totiž neustále hľadať koniec tabuľky. Teraz je Celkový súčet inde, a nemusí sa hľadať, lebo sa po vložení nového stĺpca automaticky prehodnotí aj vzorec.
Aj preto, vždy záleží na každom detaile pri popise problému...
Tento riadok to skopíruje na koniec.
Range("9:35").Copy Destination:=Range(Cells(Rows.Count, 2).End(xlUp).Row + 1 & ":" & Cells(Rows.Count, 2).End(xlUp).Row + 1 + 27)
Opäť nedostatok informácií. Tak aspoň takto.
Príklad. Nezadávate žiaden mesiac. Počíta to sumy za tovar za posledné 3 mesiace, a celkový obrat za posledné 3 mesiace. len vložíte nový stĺpec pred P3M a napíšete názov mesiaca. Všetko ostatné sa počíta a posúva samo.
Nevýhoda konkrétne tohto usporiadania (že je celkový obrat nad druhým mesiacom), je v tom, že minimálny počet mesiacov je 2. pretože by ste inak vkladali nový stĺpec (mesiac) pred vzorec na celkový obrat.
Predpokladá sa, že riadok 3 nebude mať prázdnu bunku v tabulke, ale až za ňou.
Aha, ja už viem, čo asi myslíte. Bunky v F a H sú formátované ako text, kvôli načítavaniu hodnôt do Výberových zoznamov, a prehľadávaniu týchto hodnôt. Vzorec sa musí editovať pred tým, ako je formát bunky nastavený na Text. Ak chcete editovať bunku potom, čo je nastavená ako text, tak vzorec nebude vracať hodnotu, ale text vzorca. A editačné kliknutie (teda vstup do bunky, nie označenie bunky) sa berie ako zadanie textu, aj keď nič nemeníte. Tak preto sa tak deje. To je vlastnosť Excelu.
A čo takéto niečo, spravil som Vám OnTimer ?
http://uloz.to/xLndNhbD/csm-yaas-rar
Opäť ste nanapísal o ktoré riešenie z navrhnutých 4 riešení, čo som Vám poslal máte záujem. Dal som Vám tam riešenie s priamo vo vzorci zadaným menom listu, a rozsahu, z ktorého sa bude čítať.
Dúfal, som, že uvidíme aj makro, ktorým načítate tie data, aby to trochu objasnilo, ako vznikajú a volajú sa tie importované listy. Ale tiež nič. Máte tam iba makro, ktoré premenuje prvý list po zmene J4.
Nenapísali ste ani, či bude počet riadkov, z ktorých sa má čerpať iný. Či bude stačiť na výpis vyfiltrovaných hodnôt len tých 9 riadkov v druhom liste.
Neštastne ste zvolil usporiadanie zdrojovej tabuľky, kvôli ktorému nieje možné vzorec nakopírovať do celej výslednej tabuľky bez zmeny (preskočenie stĺpca s menom zákazníka).
Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.
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.