Příspěvky uživatele


< návrat zpět

Strana:  1 ... « předchozí  263 264 265 266 267 268 269 270 271   další » ... 298

Prosím ešte raz popíšte podrobne čo sa má diať, každý krok čo s tým budere robiť opište čo urobíte na ktorom liste. Predošlé zadanie som pochopil tak, že sa majú skopírovať z listu1 do listu2 iba riadky, v ktorých niesú vyplnené všerky 4 dátumi. Teraz sa nezkopírujú 2. List 2 sa zmaže celý automaricky, vy nič nemusíte, potom sa ta vložia nové data. Mám Excel 2013, a takto to funguje.
Popíšte presne na ktorej bunke je čo zle. Lebo to zadanie bieje 100% ľahko zrozumiteľné.

Vynechajte tú jednu premennú, v tomto prípade nieje potrebná ani pre čitateľnosť:
Sub CreateDir()
Dim Cesta As String
Cesta = "c:/prace/" & Worksheets("Hárok1").Cells(1, 1) & "\"
If Len(Dir(Cesta, vbDirectory)) = 0 Then MkDir (Cesta) Else MsgBox "Tato složka již existuje!"
End Sub


dá sa ísť ešte kratšie, ale to sa málokomu dobre číta:
Sub CreateDir()
If Len(Dir("c:/prace/" & Worksheets("Hárok1").Cells(1, 1) & "\", vbDirectory)) = 0 Then MkDir ("c:/prace/" & Worksheets("Hárok1").Cells(1, 1) & "\") Else MsgBox "Tato složka již existuje!"
End Sub

Urobil som Vám jedno riešenie cez pole, rýchle, kompletné, s overovaním a vylúčením riadkov so 4 dátumami, orámovaním. Je to také rýchle, že sa to dá používať takmer OnTheFly :)

Je to ošetrené voči neexistencii súboru, voči prázdnym riadkom, voči žiadnym riadkom v súbore, voči chybe pri zápise, voči nezhodnému počtu riadkov a počtu Checkboxov, voči konverznej chybe. Proste proti chybám, pri neoprávnenej manipulácii s TXT súborom. Vyskúšajte.

Keď nikto, tak skúste toto:

Len pre zaujímavosť a úplnosť dodám, že sme to poriešili cez mail, a keďže cudzie dáta sú pre mňa sväté, tak Vám tu uvádzam to riešenie skopírované do toho môjho súboru, čo som si vytvoril sám podľa obrázkov.
V reálnom súbore robilo problém zacyklenie, z dôvodu nevyplnenej oblasti Fabrics - ošetrené, a ďalej bolo potrebné zmeniť kopírovanie hodnôt z Copy Destination na Copy PasteSpecial, pretože tam boli vzorce.

Podmienené formátovanie nefunguje pri odkazovaní na iný zošit, a to dokonca ani pri Definovanom názve 7
Tak napr. pomocným dolovacím skrytým stĺpcom...

Ešte, že ste povedal... Mal som tam chybku, a to tú, že som pole oblasti rozšíril nie o 7, ale len o 6 stĺpcov. Jedno číslo, a už to na oblasť 4 nefungovalo :)
Rozsekať chcete makro ? Tu to máte, obe verzie, s tlačítkom sa spustí tá, ktorá nebude mať v názve na konci tú "2". Lepšie Vám to vysvetliť neviem, sú tam popisy, názvy premenných.
Ak chcete vysvetliť vzorec, no ten funguje rovnako a v rovnakom slede ako to makro, akurát na konci dá kratšiu slovnú hlášku. Ku vzorcu je pre zvýraznenie pridané podmienené formátovanie.

@Vaclav-Vesely: Tak si to tu čítam, ale nevidím či a o koľko sa Vám to podarilo zrýchliť. Uveďte teda prosím pre úplnosť ako ste pokročil. Či už čas alebo prílohu.

No urobil som Vám to s takou malou "berličkou" na zisťovanie počtu riadkov v zatvorených zošitoch. V zošite Spolu.xlsm nepožívajte bunku pod tlačítkom L1, počas importu sa tam vkladá vzorec na spočítanie použitých buniek v zatvorených zošitoch. V makre je konštanta MaxR, ktorá určuje v koľkých riadkoch sa bude testovať počet použitých riadkov. Je tam nastavené 1000, ak hrozí, že túto hodnotu niekedy prekročíte, nastavte podľa potreby, ale nie zbrklo nastaviť 1 000 000, pretože to bude vážne spomaľovať.

Je tam urobená aj kontrola na prázdnu bunku alebo hodnotu 0, pretože štandardne sa pri čítaní z iného zošita dostane 0 aj z prázdnej bunky, takže to máte ošetrené.

Dávajte si pozor na to, aby ste mala súbory s datami pomenované nasledovne:
-názov súboru "01_Smutny.xlsx". Musí tam byť podčiarknik, "_", ktorý určuje, že za ním začína meno.
-týmto menom musí byť pomenovaný v zošite list s datami.

Je jedno koľko budete mať v zložke súborov, je jedno či tam budú aj iné ako Excel súbory, je jedno, či bude zožit Spolu.xlsm a dátové zošity spolu, a je jedno či budete používať XLS, XLSX alebo XLSM, a je jedno koľko bude v ktorom zošite listov.

Teraz je to nastavené tak, že v adresári kde sa práve nachádza súbor Spolu.xlsm má byť podadresár "Prac", v ktorom sú dátové súbory. To si ale kľudne zmente v riadku
Cesta = .Path & "\Prac\"
kde .Path dáva hodnotu adresy kde sa práve nachádzate so súborom Spolu.xlsm, ďalej je to jasné (dodržte lomítka).

Je to viacmenej ošetrené na chyby, či už na 0 riadkov v dátovom liste, neexistenciu listu, chybu pri vkladaní vzorcov, neexistenciu "_" v názve dátového listu, či na ignoráciu spracovania listu s názvom Spolu.xlsm (ak budú spolu). Ak Vám to dá hlášku "Chyba !", vedzte, že operácia nebola dokončená, aj keď tam máte už nejaké data, to odkiaľ posledné importované data pochádzajú, Vás môže upozorniť na to, kde je asi chyba.

EDIT: Ešte som zabudol, že čo sa rýchlosti týka, tak u mňa celá operácia na 1736 riadkoch po 11-ich stĺpcoch z týchto 15 súborov trvá odhadom asi 0,3 sek.

Včera som našiel niečo od Bruin-a (odkaz už nemám som teraz na tablete) ale rovnako som to nerozchodil. V Delphi som kedysi takúto featurku urobil oveľa ľahšie. Škoda.

No, mám toho veľa, ale tak chodím sem relaxovať, tak snáď sa bude dať. Každopádne, načítať množstvo dát z iných zošitov je násobne zložitejšie ako z rovnakého zošitu. To makro bude musieť vedieť aké mená listov má hľadať dopredu. Cez ExecuteEcxel4Makro checkneme či sa list nachádza v zošite, takže budeme vedieť už aj súbor aj list, vložíme teda vzorce na dolovanie dát. Ale ten menný zoznam musí byť dopredu známy. Nebudem to vysvetľovať celé, keď prídem domov a bude čas mrknem Vám na to.

Aby Vám to ignorovalo len jeden list tak tam je
If .Name <> "Spolu" Then
ale aby Vám to ignorovalo viac listov, treba ten riadok zmeniť na
If IsError(Application.Match(.Name, Array("Spolu", "Ďalší"), 0)) Then
Pričom do toho poľa Array("Spolu", "Ďalší")
pripíšete rovnakým spôsobom všetky, ktoré má ignorovať.

Všetky ostatné listy sú považované za dátové.

Urobil som Vám zatiaľ obe verzie.

Na liste 1 máte mesačný, mesiac meníte iba zadaním dátumu prvého dňa mesiaca v A2, regulárne dni mesiaca sa dopočítajú samé. Obdobie zadávate v číselnom formáte v H2 a I2.

Na liste 2 máte "nekonečnú" verziu, kde sú dynamické rozsahy a tabuľka je prevedená na ExcelTable, a po napísaní mien do B alebo C sa pridá automaticky riadok aj so vzorcami. Obdobie zadávate v dátumovom formáte v H2 a I2. Ak nebudete túto verziu používať, zmažte tento list aj Definované oblasti "Datum" a "Stanoviste".

Mám to pre Vás, len mi ešte upresnite, či ide o napr. jeden mesiac, alebo či bude pod sebou dlhšie prelínajúce sa obdobie.


Strana:  1 ... « předchozí  263 264 265 266 267 268 269 270 271   další » ... 298

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