Příspěvky uživatele


< návrat zpět

Strana:  1 ... « předchozí  166 167 168 169 170 171 172 173 174   další » ... 302

Dnes tu ešte pred pár hodkami bola téma na losovanie so zobrazovaním priebežných výsledkov. No a keď sa k tomu konečne dostanem a idem sem dať návrh, tak téma je fuč.

No už to mám z časti navrhnuté podľa požiadaviek, tak ak niekto chce, nech sa inšpiruje (napríklad aj pôvodný zadávateľ)

Prípadne v tom druhom vzorci môžete namiesto matice SUM/SUMA, použiť obyčajný nematicový variant vzorca. Nahradíte funkciu SUM/SUMA funkciou SUMPRODUCT/SOUČIN.SKALÁRNÍ, a posledné násobenie * nahradíte bodkočiarkou ;

Ono SUMPRODUCT/SOUČIN.SKALÁRNÍ je vlastne tiež matica, len interná, a Vy ju v tomto prípade nemusíte zadávať cez Ctrl+Shift+Enter (v niektorých prípadoch je treba aj SUMPRODUCT zadávať ako maticu, ale na tento nie).

Mohol by ste použiť namiesto toho Evaluate. Je to vlastne 1 riadok kódu. Rovnako môžete použiť cyklus.

EDIT:
Alebo takto aj s názvom listu, ak by sa jednalo o iný ako aktívny list...
Sub NasobDel(Oblast As Range, bTyp As Boolean, nHodnota#)
Dim ADR As String
Application.ScreenUpdating = False
With Oblast
ADR = "'" & .Parent.Name & "'!" & .Address
.Value2 = Evaluate("=IFERROR(SUBSTITUTE(" & ADR & ","","",""."")" & IIf(bTyp, "*", "/") & nHodnota & "," & ADR & ")")
End With
Application.ScreenUpdating = True
End Sub

OR/NEBO v maticových vzorcoch nefunguje. Musí sa použiť +.
Na to prvé ani maticu nepotrebujete, stačí SUMIFS.
Skontrolujte si to, moc som sa tomu nevenoval...

Áno, reakcia na udalosti pokračuje aj naďalej, ak bude Application.EnableEvents = True
Ak to potrebujete dať na False, tak to následne ošetrite pomocou
On Error Goto KONIEC
A potom pred End Sub
KONIEC:
Application.EnableEvents = True

Len tip z mobilu, proste skúste dať do NEPŘÍMÝ.ODKAZ aj list:
SUMIF(NEPŘÍMÝ.ODKAZ("'PRIcelý rok - 1'!L7:L"&B1);"<2000";NEPŘÍMÝ.ODKAZ("'PRIcelý rok - 1'!J7:J"&B1))

Určite ? Takýto prípad nastane iba pri kopírovaní hodnôt v 3 stĺpcoch a následnom vložení do stĺpcov G:I. A potom ešte pri nejakom hromadnom importe do celého listu/tabuľky.

Nechcete to náhodou tak, že:
Ak bola zmenená bunka v tabuľke v stĺpcoch G alebo I, skontroluje sa, či obe (G aj I) niesú prázdne, a ak niesú, tak sa vloží za ne riadok.

Potom sa dá ešte eliminovať aj to, že síce nastala zmena v G alebo I, ale zároveň je počet zmenených buniek v riadku rovnaký ako maximálny počet stĺpcov, a tak sa zistí, že išlo o pridanie/zmazanie celého riadku, vtedy nič nerobiť.

A keďže tam máte veľa Prepojení, tak ma ešte napadá, či náhodou "zmenou" nemáte na mysli to, že nejaká hodnota bola iná ako terajšia aktualizovaná (z nejakého prepojenia). A to je potom už komplikácia, lebo treba uchovávať kópie všetkých predošlých hodnôt po každej zmene čohokoľvek = pomalé.

Takže ešte upresnite.

-Takže keď nastane zmena v bunke G5 a zároveň zmena v bunke I5 tak sa medzi riadky 5 a 6 vloží nový riadok ?
-Alebo je to tak, že je jedno v ktorom nastane zmena, či v G alebo v I, vždy sa vloží za zmenu riadok ?
-Čo ak "zmena" znamená vymazanie bunky. Aj vtedy sa má vložiť riadok ?
-Ak nastane hromadná zmena, tak postupne povkladať riadky za každým riadkom zmeny? Alebo iba za skupinu zmien?
...

Po dlhom skúšaní všetkého možného, som nakoniec chvíľu googloval a narazil som na tento nevysvetliteľný problém u mnohých ďalších nešťastníkov.

1. Vynechajte (na Form to nemá vplyv, iba na list):
Application.EnableEvents = False / True
Application.ScreenUpdating = False / True


2. Vložte toto:
Private Sub ListBox2_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
ListBox2.SetFocus
End Sub


Vyskúšajte, vysvetlenie nežiadajte.

PS: Prečo nepokračujete v pôvodnom vlákne?

Hneď prvý odkaz na Googli:
Count unique values in a range with COUNTIF
a
Count unique text values in a range
prispôsobené na Váš príklad.

Je to poriadna pakáren, ten kód :)
Bolo by ho treba prekopať asi celý, okrem toho čo písal Honza53, treba sa pozrieť na používanie Split(), a polí celkovo, znížil by sa počet cyklov, lebo horizontálne pole sa dá spojiť naraz cez Join().
Ale najväčší problém si tam robíte v tom, že predpokladáte rovnako ako v liste, nevykonanie udalosti keď zadáte
Application.EnableEvents = False
Chyba! Toto vo formulári nefunguje. Na to si musíte deklarovať nejaký globálny príznak formulára typu Boolean, ktorý si obhospodárite sami. Teda si vždy pri vyvolaní zmeny prvku najskôr skontrolujte tento príznak, a konajte na základe toho.

Nechce sa mi to terazky celé študovať, prekopávať, keď štúdiom kódu sa nedá vždy presne vydedukovať čo by dotyčný chcel dosiahnuť. Na to by bol potrebný mimo iného príklad konkrétneho správania pri konkrétnych akciách užívateľa a konkrétnych hodnotách vstupov a výstupov. Plus lepší, pochopiteľnejší popis (pochopiteľnejší pre nás, lebo mi vieme, že Vy viete čo chcete, ale my do Vašej hlavy nevidíme, takže pre nás je treba vysvetľovať to inak. Proste ako pre niekoho, kto netuší čo u Vás znamená súprava, prečo sa musí kopírovať kombinácia napr "Ce(Pra)" šesť krát a pod...).

Vložte prílohu. Buď sa zaregistrujte a budete môcť prikladať prílohy (XLSM zabalte do ZIP), alebo upnite prílohu niekde na úložisko. Ak tam máte citlivé dáta, tak ich zmažte alebo prepíšte. Nech nemusíme my vymýšľať zadanie, príklad, aj riešenie.

V tomto prípade je jedno, či zaškrtnete v tom druhom obrázku voľbu "Řadit vše podobné čislu jako číslo" alebo "Řadit čísla a čísla uložená jako text odděleně".

Nemáte tam ani jeden z 2 (vlastne už troch verzií pomocného vzorca) čo sme sem dali.

Neoznačujete celú potrebnú oblasť. Nestačí označiť iba pomocný stĺpec. Musíte označiť všetky dáta, ktoré sa majú "pohnúť". Teda od prvej dátovej bunky v stĺpci J po poslednú dátovú bunku v stĺpci O.

Ale hlavne odpovedzte na tie otázky, či sú tie dáta doťahované do tej tabuľky pomocou vzorcov. Ak áno, ukážte vzorce z J6, K6, L6, M6 (to číslo 6 zamente za Vaše, mi ho nevieme).

-Označte oblasť J6:O21
-Choďte do menu hore, ako som Vám poslal link. Preboha sú tam obrázky, to musíte nájsť. "Data" to bude v preklade "Údaje". "Sort" to bude v preklade "Zoradiť".
-Nabehne Vám okno, ktoré by v Office XP malo vyzerať podobne, ako to na 3. obrázku v linku čo som poslal.
-Máte tam také okno ?
-Urobte Screenshot, a ukážte to okno.
-Ak tam je, tak "Sort by" by mohlo byť preložené ako "zoradiť podľa", a tu vyberiete stĺpec O
-Zadajte ešte "No header row" teda niečo ako "Neobsahuje riadok s hlavičkou" alebo podobný význam má to zaškrtávatko.
-OK
-Máte to zoradené.

EDIT: Ešte ma napadá otázka. Odkiaľ sa v tej tbl berú tie dáta ? Nejakými vzorcami ? Akými presne ? To nebude fungovať. My tu stále predpokladáme, že tam tie dátumy sú fyzicky napísané. Ak sú tam ale doťahované nejakým vzorcom s indexovaným poradím nejakých výsledkov, tak to síce zoradí, ale nič sa opticky nestane, lebo vzorce znovu vypočíta, a tie si znovu natiahnu indexované poradie - pôvodné.

Maticový vzorec (Ctrl+Shift+Enter):
=IF(A2="";"";CHOOSE((MAX(IFERROR(SEARCH(IF($E$2:$E$12="";"žčťžčťžčťžčť";$E$2:$E$12);A2);0))>0)+1;"Nenalezeno";"Hledané slovo nalezeno"))
=KDYŽ(A2="";"";ZVOLIT((MAX(IFERROR(HLEDAT(KDYŽ($E$2:$E$12="";"žčťžčťžčťžčť";$E$2:$E$12);A2);0))>0)+1;"Nenalezeno";"Hledané slovo nalezeno"))

Oblasť slov je v $E$2:$E$12, stačí zmeniť. Vzorec je normálne naťahovací.


Strana:  1 ... « předchozí  166 167 168 169 170 171 172 173 174   další » ... 302

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