No a teraz keď si chcem pozrieť tú prílohu, už jej niet ...
Návrh vzorcom aj makrom. Makro dáva aj čísla, vzorcom doplniť aj čísla by bolo príliš komplikované.
Trošku si skráťte tú prácu s oblasťami:
Sheets("Vyjadreni").Range("B37:T51,L13:S16,M18:O18,Q18:S18,P20:S21,I27:I29,N27:S29").ClearContents
Používate asi CZ Excel, tak zmente vzorec na český:
=KDYŽ(COUNTIF(A1;C:C)=0;NEDEF();"ok")
Odstránenie:
Po tom čo urobíte, ako bolo napísané, ostanú označené chybné bunky. Pravý klik, Odstrániť, Celý riadok.
Riešenie ?
1. Opakujúce použitie Cells(1,2) nahradte tak, že iba raz si do premennej HDN = Cells(1,2).Value uložte hodnotu, a pracujte s premennou. Rovnako ak používate súvislú oblasť buniek Cells(11,2-5) načítajte si ju do premennej aHDN = Cells(11,2).Resize(4).Value a pracujte s poľom aHDN(riadok, stĺpec). Prestupovanie z listu do VBA je pomalé, a nevieme koľkokrát tieto testy prevádzate, môže to spomaľovať.
2. A s tým súvisí ďalšia vec - pridajte prílohu (!), aby bolo vidieť, čo robia volané procedúry. Zaregistrujte sa a môžete prikladať prílohy.
3. Možno bude pre Vás riešením vhodné použitie Application.EnableEvents (aj vypnutie aj zapnutie)...
Poznámky:
Používate tam Application.ScreenUpdating = False. Vraciate to niekde aj naspäť ?
Určite majú bunky v Cells(11,2-5) hodnotu "1" a nie 1 ?
Musí to byť vo Worksheet_Calculate ?
A nepríde Vám zbytočné 2x klikať ? Raz na ListBox "Mail CS" a potom na tlačítko tiež "Mail CS". Akciu vykonajte buď hneď pri kliku v ListBoxe, alebo ešte lepšie ListBox celý preč, a len klikajte na požadované tlačítko.
Inak nastavte vlastnosť tlačítok Enabled predvolene na False, a potom
Private Sub ListBox1_Click()
Controls(Array("btnMailCS", "btnMailIC", "btnMailCSII", "btnMailWH")(ListBox1.ListIndex)).Enabled = True
End Sub
Vám zapne dané tlačítko.
EDIT: Ešte ma napadlo, že ak to nemá byť jednotázové, tak treba vždy ostatným tlačítkam nastaviť Enabled = False, lebo takto si ich postupne pozapínnate. Som už len na mobile, ale skuste všetkym 4 nastaviť False pred riadkom čo som Vám poslal.
Mne príde ako nezmysel zadávať niekam meno Lenka, ak je Lenka prítomná vždy, a navyše kombinácia rovnakých mien napr. Lenka + Tonda / Tonda + Lenka má rovnaké hodnoty, a iné kombinácie mien sa dať nedajú (napr. Tonda + Karel). Z toho mi vyplýva, že udávať meno Lenka je zbytočné, a z toho ešte ďalej mi plynie zbytočnosť celého jedného stĺpca s menom.
Rozmýšľam správne, či nie ?
EDIT: Aha, jedine, že by boli príkladné mená uvedené zle, a v skutočnosti by sa nejednalo vždy o Lenku, ale aj o iné mená. V tom prípade by ale kombinácií bolo podstatne viac.
A ešte treba zahrnúť podmienku pre počítanie s cenou výrobku podľa bunky G21, čo nieje problém, len ďalšia vec ktorej nerozumiem. Platí :
(hodiny + výrobok) * Početalebohodiny * Počet + výrobok?
eLCHa napsal/a:
...
Pořád platí, co píše xlnc
...
Tak potom by sa to maticovo dalo snáď upraviť takto:
=SUM((MOD(COLUMN(F7:O22);2)=0)*(F7:O22=119)*OFFSET(F7:O22;0;1))
=SUMA((MOD(SLOUPEC(F7:O22);2)=0)*(F7:O22=119)*POSUN(F7:O22;0;1))
Chápeme, ale ja osobne nepoznám riešenie, a nič som ani nevygooglil. Snáď niekto iný ...
No tak takéto niečo pôjde asi iba nachystaným vzorcom na dostatočný počet riadkov, alebo makrom.
EDIT: Teraz si uvedomujem, že vlastne neviem, ako sa správne počíta na ktorý deň padne posun časov. Myslel som, že je to posledný celý víkend v marci a októbri, ale zdá sa, že to tak nieje. Možno to bude 4 víkend v mesiaci (čo nieje to isté). Keď bude chuť, si to ešte možno pohľadám, zatiaľ si to teda v CHOOSE/ZVOLIT v F3:F1002 zmente na ten svoj výpočet.
1 param - normálne pripočítanie hodiny
2 param - marec
3 param - október
4 param - nič
Niekoľko príkladov. Ten koniec mat. vzorca hovorí, ktorú položky v poradí od najmenšej (SMALL) ma vypísať. V riadku D1 hodí ROWS($A$1:A1) = 1, v riadku D2 hodí ROWS($A$1:A2) = 2, v riadku D3 hodí ROWS($A$1:A3) = 3... stačilo by ale ROW(A1), a postupným kopírovaním do ďalších riadkov sa výsledok oboch verzii mení na poradové číslo 1,2,3,... a to je účel.
Ak nebudete vedieť, čo som ktorou verziou myslel, alebo ako som ju dosiahol, píšte.
Vložte prílohu...
Frk je práve v tom, že musíte povoliť ten Iteračný výpočet v nastavení Excelu. Tým sa dosiahne to, že bunka môže odkazovať aj na svoju vlastnú hodnotu, ktorú práve má.
Teda:
V A1 máme číslo 5
V A2 prebehne test : Je V A1 chyba ? Nieje, tak si odtiaľ prekopčím číslo 5
A teraz máme v A1 aj v A2 číslo 5
Nastane chyba aktualizácie dát a do A1 sa dostane N/A:
V A1 máme chybu
V A2 vzorec kontroluje či je v A1 chyba. A jéje, v A1 je chyba, čo teraz ? No ponechá si svoju vlastnú hodnotu, ktorú doteraz mala, lebo môže odkazovať sama na seba v prípade chyby v A1.
Takže v A1 je chyba a v A2 je 5
Skôr ako ste to napísal, ste to mal vyskúšať. Ja som to neskúšal s aktualizáciou tabuliek, len obyčajným navodením chyby. Nechce sa mi to vyrábať. Takto si urobte celú oblasť dát niekde, a grafy odkazujte tam.
Nastavenie Excelu - Vzorce - Povolit iteračný výpočet
a potom do A2
=IF(ISERROR(A1);A2;A1)
=KDYŽ(JE.CHYBHODN(A1);A2;A1)
alebo
=IFERROR(A1+0;A2)
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.