Příspěvky uživatele


< návrat zpět

Strana:  1 ... « předchozí  174 175 176 177 178 179 180 181 182   další » ... 289

Keď si prečítam vetu ktorú ste napísal:
"Ještě v akce ma být Pohotovost kde se uctuje 13 korun za hodinu"
Tak mi z toho jasne plynie, že "Pohotovost" má byť v Akce.

Teda na odstránenie stačí odstrániť podmienku v stĺpci D, a odstrániť pohotovosť zo zoznamu akcií.

Ak má byť Pohotovosť aj samostatná Akcia v stĺpci Akcia (teda zo zoznamu akcií), aj zároveň samostatný stĺpec, tak tomu nerozumiem. Každopádne som to teraz tak upravil. Je tam aj pomocou PF zariadené, ak by ste tam zabudli čísla z 31 dňového mesiaca pri vypĺňaní 28 dňového, aby očervenelo. Preto tam pravdepodobne chcete mať čísla, a nie dátum v poli Datum, lebo by ste inak museli prepisovať všetky dátumy v každom mesiaci.
Makro zatiaľ nepotrebujete. Ušetrilo by Vám 1 klik na pridanie riadku, ale vyžaduje povolenia makier, čo nie každej firme z hľadiska bezpečnosti vonia. Súčty, aj PF, aj rozbaľovacie zoznamy sa pridajú aj keď pridáte nové riadky takto:
a) chcem pridať 1 riadok, kliknem na uško riadku pred ktorý má byť pridaný pravým myšítkom - Vložiť.
b) chcem vložiť X riadkov, označím za riadkové ušká počet želaných riadkov X tak, že prvý bude na tom riadku pred ktorý má byť vložený prvý, pravý klik - Vložiť

Toto by nefachalo spoľahlivo, ak by bol vkladaný riadok za posledný, preto je tam určenie oblasti urobené cez vyhľadanie slova "Součet".

Nedomyslené a/alebo nedovysvetľované. Km majú mať samostatný stĺpec, teda sa môžu pripísať k Akcii (alebo nemusia ak neboli faktúrované)? Pohotovosť má mať samostatný stĺpec (vypĺňanie podľa potreby k nejakej akcii), alebo to má byť samostatná akcia ? To je zásadný rozdiel. Podľa toho sa bude robiť konečný súčet a podľa toho sa môže meniť pomocou PF ak v stĺpci Cena formát. Napr v prípade, ak sa jedná o Pohotovost a tá má byť Akcia, nie stĺpec, tak sa zobrazí 13,- Kč/h, v inom prípade sa zobrazí 200,- Kč.
Na vysvetlení ste si dal pramálo záležať. Žiadne dáta, na ktorých sa dá stavať, všetko aby si tu ľudia vytvárali sami.

Ak chcete "nekonečný" formulár dajte súčty hore, kde ich netreba posúvať. Iba natiahnete rozbalovacie zoznamy. Ak Vám stačí výhľadovo napr. 20 riadkov, nechajte ich za nimi. Alebo použite objekt Tabuľka namiesto obyč. tabuľky.

Díky Stalker za zastúpenie pri objasňovaní :) Nebolo času.
Tu máte narýchlo verziu s pomocným reťazcom. Rozdiel je enormný.
Porovnanie robím na 20 000 záznamoch vs. 20 000 záznamov, pričom je 19 902 výsledkov aj v jednom aj v druhom prípade.

Čas pri metóde Match : 00:03:50
Čas pri metóde String: 00:00:20

Tu na fórum dávam prílohu bez dát.
Kompletná príloha s 20 000 záznamami je na GoogleDrive

Včera som sa k ďalšiemu variantu nedostal.
Keď ste ešte len na riadku
Day1 = .Cells(2, 1).Resize(R1).Value2
tak pole nieje naplnené, len je vytvorené, teda má veľkosť
riadky 1-5
stĺpce 1-1

každá hodnota je Empty (prázdna hodnota)
keď dáte ešte raz F8 a prejdete na ďalší riadok, až potom sa riadok vykoná a pole dostane hodnoty z patričných buniek. Ožltnutý riadok v kóde pri krokovaní je len označenie riadka, ktorý sa bude najbližšie vykonávať, nieje ešte vykonaný.

Tých podmienok je tam preto toľko, lebo ak je napr meno iba jedno, tak ho Excel do VBA nevráti ako pole 1x1 ale ako jednu hodnotu. Ďalej napr. ak jedno pole je prázdne, tak je zbytočná kontrola, lebo to znamená, že všetky z neprázdneho v prázdnom chýbajú, tak sa iba skopírujú, samozrejme iba v prípade, že nieje prázdne aj jedno aj druhé, a samozrejme s ošetrením ak by to nebolo pole ale iba jedna hodnota (viď vyššie), a kombinácie týchto podmienok. Skoro to isté vypodmienkovanie stavov platí aj pri následnom zápise. A tým sa stáva kód dlhý, a čo je dlhé, je zložité, a čo je zložité je náchylné k chybám.
...

PS: Inak vidíte našiel ste ďalšiu nepresnosť v poznámke:
Day1 = .Cells(2, 1).Resize(R1).Value2 'načítanie mien do poľa Day2
a
Day2 = .Cells(2, 4).Resize(R2).Value2 'načítanie mien do poľa Day2
majú rovnaký popisok, ale samozrejme pri kopírovaní riadkov kde sa mení iba R1 na R2 a Day1 na Day2 som zabudol zmeniť popisok na
'načítanie mien do poľa Day1
v prvom prípade.

EDIT: Inak pre programátora je jedna z najťažších vecí ošetriť všetky možné veci, čo dokáže užívateľ vo svojej vynaliezavosti vyparatiť. Nadáva sa tomu blbuvzdornosť. A je to začarovaný kruh. Preto aj často veľmi zložité veci, ako napr. Windows, majú veľa chýb, lebo ich univerzálnosť tlačí pred sebou nepredstaviteľnú komplikovanosť, previazanosť, závislosť a robustnosť kódov. Vývojári nemajú šancu, ešte že majú užívateľov, ktorý ich upozornia (niekedy aj pár rokov v kuse). 1

No veď práve v tom linku je napísané toto:

Mám Office 2016 Professional x64 SK a nieje tam (doplnok Analytické nástroje mám zapnutý, ak by to s tým súviselo)

Ak nemáte predplatiteľskú verziu Office 2016 365 (to "365" je kľúčové), ani nemusíte hľadať 7

Opravené v príspevku s prílohou, bola tam ešte jedna chyba, ktorá vznikla premenovávaním mojich názvov polí na Vaše (D1 vs. Day1). To len potvrdzuje to, že samotné porovnanie je pár riadkov, ale desiatky sú kontrola rôznych nechcených stavov.

Keď ale píšete, že až 17K vs. 20K riadkov, tak Vám snáď ešte urobím tú, čo to robí cez reťazec, tá bude možno najrýchlejšia. A možno to aj otestujem 1

EDIT: No teraz keď je tam už toľko podmienok, ošetrujúcich všakovaké možné stavy a ich kombinácie, už sa mi to veru nepáči. Postupne ako to človek ladí, prichádzajú stále nové a nové komplikácie, až sa Vám nakoniec znepáči samotný návrh. Sú tam opakujúce sa časti pre obe polia, tak by sa to dalo spracovať procedúrou s parametrami, bolo by to snáď kratšie. Uvidím, ako večer dopadne 2. verzia.

Heh, kód je HardCore kvôli ošetrovaniu rôznych eventualít:
-čo ak nie sú zadané mená v jednom či druhom poli (vtedy stačí skopírovať opačné)
-alebo nie sú v oboch (vtedy sa nerobí nič)
-sú nejaké starý výsledky na zmazanie (pre obe polia) ?
-samozrejme musí byť kontrolovaný zápis každého poľa, či vôbec existuje...

kontroly eventuálnych chýb to nabobtnajú najviac
uvidím podľa času a chuti, možno Vám prekopen aj iný variant...

EDIT: Pozor, v mojom predošlom príspevku som našiel chybku. Príloha je tam vymenená.

No a keď výpočet zreťazíte - teda IF(ISERROR(výpočet);"";výpočet) ???

Upravil som len môj 1. variant z 3 a popísal. Chcete aj ostatné moje popisovať a prerábať ? Neviem či sa s tým mám piplať (čítajte srať) 1
Máte tu už 5 variantov, treba si 1 vybrať a mi Vám ho popíšeme doladíme.

EDIT:Výmena prílohy, našiel som chybičku:
V starej prílohe je
WorksheetFunction.Max(R1, R1)
má to byť samozrejme
WorksheetFunction.Max(R1, R2)
Takže tu je vymenená príloha

EDIT: Opravená aj chyba, keď bolo meno iba 1, a oprava názvu poľa.

=COUNTIF(OFFSET(C7;;;;MATCH(TODAY();$C$6:$AG$6;0));"X")
=COUNTIF(POSUN(C7;;;;POZVYHLEDAT(DNES();$C$6:$AG$6;0));"X")

1. Nič čo popisujete teraz, v zadaní nemáte. Tam ste mal niečo iné. Tak som to pochopil ja.
2. Takéto príklady sa nepopisujú slovami, ale príkladom vo forme súboru (XLSM súbor musí byť zabalený do ZIP), kde bude na konkrétne manuálne vytvorenom príklade ukázané čo máte, a čo má byť výsledok.
3. Aké statické polia ? Moje polia sú dynamické. Veď si pri každom spustení nájde rozsah každého poľa. Ešte si aj predošlý výsledok dynamicky vymaže.
4. Že Vám hádže zlé výsledky po "úpravách" - no veď práve. Najskôr si dajte záležať na prílohe, potom Vám snáď urobíme nejaké verzie postupov, ktoré si otestujete na reálnych dátach (reálnom množstve údajov), a zistíte, ktoré Vám pobeží najrýchlejšie, alebo bude inak vyhovovať. Či máme okomentovať všetky naše riešenia, a Vy zmeníte zadanie ?

Polepšite sa 1

Sem s tou prílohou, a keď bude čas...

EDIT: Čo má ten Váš uvedený kód robiť ?
-chýba End Sub - to nieje problém
-Worksheets"Tabelle4") - to funguje bez zátvorky asi ťažko
-deklarácia last_row je, last_row2 nie
-použil ste najpracnejšiu možnú formu kopírovania oblasti buniek z jedného listu do druhého - bunku po bunke
-a čo index poľa 0 a 1 ? Keď dáte Redim(2) dostanete trojmiestne pole (0,1,2)
-takže z listu Tabelle4 nakopíruje A->A , D->B, žiadne porovnávanie to nerobí.

Tá príloha s príkladom a rozšírený popis je ešte potrebnejší.

Ďalšie 3 možnosti makrom. To sa dá ale aj cez KT. Musíte si na reálnych dátach skúsiť čo bude lepšie. Inak pozor funkcia TRANSPOSE funguje len do cca 32K záznamov, inak je treba pole otočiť cyklom.

Odstavte
On Error Resume Next
A čekujte, či Vám hodí na nejakom riadku chybu. Páč asi kvôli hádzaniu nejakej chyby to tam vôbec je.


Strana:  1 ... « předchozí  174 175 176 177 178 179 180 181 182   další » ... 289

Uživatelské menu

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

Menu

On-line nástroje

Formulář Faktura

Formulář Faktura IV

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

Aktivní diskuse

vyhledání obsahu buňky

vfort • 18.7. 11:22

Názvy z řádků do sloupců Power Query

Alfan • 18.7. 10:01

Tlac 2 roznych tabuliek

loksik.lubos • 17.7. 20:43

Týden v roce

Petr92 • 16.7. 15:34

Řazení podle času v kategoriích

veny • 16.7. 11:34

špatný výpočet ze zisku - příčina?

Anonym • 12.7. 22:56

špatný výpočet ze zisku - příčina?

Jakoby • 12.7. 12:35