Příspěvky uživatele


< návrat zpět

Strana:  1 ... « předchozí  229 230 231 232 233 234 235 236 237   další » ... 286

Urobil som už 2 verzie makra, ktoré odstráni viacpísmenné preklepy, ale obe verzie nepochopiteľne narážajú na nelogickú chybu. Ak sfunkčním toto, potom mám v pláne porovnávať správne mená hľadaním v "pochybnom" mene, od najdlhšieho správneho (kvôli nájdeniu najskôr "Jana" až potom "Jan").
Zatiaľ som nevymyslel metódu na opravu "Petrer". Možno na to budú odborníci niečo vedieť, lebo mňa napadlo, len porovnať počet zhodných písmen so správnymi menami. Ale to ešte neriešim...

Ale k tej nepochopiteľnej chybe. Nemôžem počítať viac ako do 32767 5
stačí keď dám
Dim odkial as Long
odkial = 32767 + 1

a dostanem chybu OverFlow 9
Čo je toto za sprostosť ?

Presne tak. tento vzorec, ktorý spomínate, uviedol
buger(29.1.2016 20:08)
a ja som ho pridal k môjmu iba pre porovnanie.
Teda moje riešenie je v F1:H1
a to od "buger", pre porovnanie v F2:H2.

Ja neviem, možno by to šlo inak, takto ma to napadlo, zdalo sa mi to funkčné, tak som to poslal. Ale máte pravdu, že často robím veci príííliš zložito, ale zrovna teraz to nieje až také blbé, snáď 1

EDIT:
Ešte ma napadlo a pár znakov skrátiť toto
=CHOOSE(IF(Hárok1!$F$1="Zoznam B";1;2);ZoznamB;ZoznamD)
na toto
=CHOOSE((Hárok1!$F$1="Zoznam B")+1;ZoznamD;ZoznamB)

1. časť otázky: Jedno je dokument Wordu a jedno zošit Excelu. Všetko je vy-X-ované. Nikto nevie čo odkiaľ a kam má ísť. Žiadne hlavičky tam nemáte. V tomto by som ale aj tak nevedel poradiť, aj keby ste to popísali a poslali zrozumiteľné.

2. časť otázky: Napr. takto:
=ROUNDDOWN(A1+0,05;1)
formát bunky si nastavte na Číslo s 2 desatinnými miestami.

@vovka.h:
Dlhé ?
Toto sú všetky vzorce, ktoré som použil, teda bunky aj Definované oblasti aj PF:
SK
=IFERROR(OFFSET(Vyber;MATCH($G$1;Vyber;0)-1;-1;1;);"")
=CHOOSE(IF(Hárok1!$F$1="Zoznam B";1;2);ZoznamB;ZoznamD)
=Hárok1!$B$2:$B$4
=Hárok1!$D$2:$D$4
=ISERROR(MATCH($G$1;Vyber;0))


CZ
=CHYBHODN(POSUN(Vyber;POZVYHLEDAT($G$1;Vyber;0)-1;-1;1;);"")
=ZVOLIT(KDYŽ(Hárok1!$F$1="Zoznam B";1;2);ZoznamB;ZoznamD)
=Hárok1!$B$2:$B$4
=Hárok1!$D$2:$D$4
=JE.CHYBHODN(POZVYHLEDAT($G$1;Vyber;0))

Pozrite iba to moje riešenie v F1 a G1. Mne to nepripadá dlhé, robím často (zbytočne) oveľa dlhšie...
V F2 a G2 je len na porovnanie aplikované riešenie od kolegu "buger".

@buger:
Toto sa dá riešiť jedine makrom, lebo Overenie nemá takú funkciu, aby odstránilo hodnotu, ktorá v bunke je. To PF som Vám tak pridal presne preto, ak by ste nechceli/nemohli použiť makro, tak aby Vám do očí udrelo, že hodnotu treba zmeniť.
To Vaše makro môže byť. Volá sa ale 2x. Lebo ClearContents vyvolá ďalšie spustenie OnChange. Buď to obalíte do
Application.EnableEvents = false
...
Application.EnableEvents = true
alebo to necháte tak. Neviem čo bude rýchlejšie.

Ďalej ak by mohol nastať prípad, že sa zmení bunka s hlavným zoznamom spoločne s inými bunkami naraz (mazanie, kopírovanie,...) tak to treba ošetriť v OnChange nie porovnaním priamej adresy, ale cez Intersect...

Proste záleží na tom, ako sa to bude používať. Použitím makra v OnChange, prichádzate o Undo.

Ak by išlo o to, aby ten vzorec nepôsobil dlhý, zložitý, mätúci, tak si výber oblasti (v mojom prípade) urobte pomocou Definovanej oblasti.
CHOOSE/ZVOLIT namiesto INDIRECT/NEPŘÍMÝ.ODKAZ Vám umožňuje mať v bunke s prvým výberom slová oddelené medzerami.
Dá sa tam prirobiť viac vecí, napr. rozsahy môžu byť dynamické, alebo to môže byť urobené ako kopírovateľný vzorec...

Viď napr. tu nedávno.
Pred čiarkou sú dni
dni = 0
po čiarke nasleduje desatinná časť dňa, ktorú keď vynásobíme 24 zostane nám pred čiarkou hodnota minút.
Zostatok za čiarkou opäť vynásobíme 60 a celá časť sú sekundy. Snáď som sa nedoplietol.
Na tomto príklade je pekne vidieť to Excelovské automatické zaokrúhľovanie (v tomto prípad sekundy).
Riešenie je v danom linku.

To môže byť veľa riešení. Tu som si napr. pomohol CHOOSE, MATCH, OFFSET, IFERROR (ZVOLIT, POZVYHLEDAT, POSUN, CHYBHODN) ... a podmienené formátovanie

Takto by ste si napr mohli vypočítať oblasť rozsahu (môžu byť medzi tým prázdne riadky):
{A1:INDEX(A1:A1000;MAX(NOT(ISBLANK(A1:A1000))*ROW(A1:A1000)))}
{A1:INDEX(A1:A1000;MAX(NE(JE.PRÁZDNÉ(A1:A1000))*ŘÁDEK(A1:A1000)))}

dajte to do SUM/SUMA
{SUM(A1:INDEX(A1:A1000;MAX(NOT(ISBLANK(A1:A1000))*ROW(A1:A1000))))}
{SUMA(A1:INDEX(A1:A1000;MAX(NE(JE.PRÁZDNÉ(A1:A1000))*ŘÁDEK(A1:A1000))))}

alebo do SUMIFS, tu nepoznám Vaše podmienky, preto aby Vás vzorec nemýlil, tak si Výpočet rozsahu dajte do definovanej oblasti "RNG"
=$A$1:INDEX($A$1:$A$1000;MAX(NOT(ISBLANK($A$1:$A$1000))*ROW($A$1:$A$1000)))
=$A$1:INDEX($A$1:$A$1000;MAX(NE(JE.PRÁZDNÉ($A$1:$A$1000))*ŘÁDEK($A$1:$A$1000)))

a SUMIFS napr
{=SUMIFS(RNG;RNG;"<>"&88)}

To je len úvaha/tip, netuším Vaše použitie. Pozor na to, je to maticový vzorec Ctrl+Shift+Enter)

Ale najlepšia bude Tabuľka - objekt.

A aký vplyv má mať na zelené/červené v C10:I10, ten riadok OK/NG ?

EDIT: Ak musí byť splnené to, že musia byť zelené všetky hodnoty a zároveň posledné musí byť OK, tak napr. takto

Na víkend som si naplánoval jeden deň voľno, tak keď mi to vyjde, môžem sa Vám na to mrknúť. Nič ale nesľubujem...

-V prvom rade si pozrite, či nemáte zlé adresovanie názvu listov.
-Ak máte podozrenie, že Vám nejaké makro mení bunky, v danom liste si dajte BreakPoint do OnChange, a ďalej krokujte, aby ste videli, kam sa vráti.
-Ak používate globálne makro pre celý zošiť, pozrite či nemá tento list svoje makro v metóde onchange, lebo to je nadradené globálnemu.

Napr.

Je to vždy 90% z predošlého čísla. Čiže násobiť 0,9.
Takže si do dajte
A1 = 1000
A2 = A1*0,9
bunku A2 potiahnite koľko potrebujete.

Tak to Vás sklamem. Nič nezabráni úprave, ak dotyčný chce a má snahu či nejaký úmysel, o to očividne má. Tak ako to Vy prevediete na obrázky, tak si to on prevedie späť na text pomocou OCR.
S prevodom na obr. ale skúsenosť nemám...

Zadajte do Google "pdf unlocker" a hneď 1. odkaz je free online unlocker.

@ spitffire: Títo 2 páni by Vám to asi urobili peknejšie, ale toto máte odo mňa na dobrú noc :)
Sub Copy_1_To_3_Columns()
Dim P, D(), x As Integer, y As Long, r As Long, s As Integer
With Worksheets("List1")
r = .Cells(Rows.Count, 1).End(xlUp).Row
P = .Cells(1, 1).Resize(r)
End With
s = r \ 3
ReDim D(1 To s + 1, 1 To 3)
For y = 0 To s
For x = 1 To 3
If (y * 3) + x <= r Then D(y + 1, x) = P((y * 3) + x, 1)
Next x
Next y
With Worksheets("List2")
.Columns(1).ClearContents
.Cells(1, 1).Resize(s + 1, 3).Value = D
End With
End Sub


Strana:  1 ... « předchozí  229 230 231 232 233 234 235 236 237   další » ... 286

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