Příspěvky uživatele


< návrat zpět

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

Nerozumiem teda, čo myslíte pod pojmom "upraviť kód". Ja by som to takto nerobil, ale toto je asi také nejaké podobné (aj s podobnými chybami ako neurčitý list, zbytočné Copy...):
Sub POKUS1()
Dim PoslRadek As Long
PoslRadek = Cells(Rows.Count, 2).End(xlUp).Row
Range("C5").FormulaR1C1 = "=SUMIFS(DATA!C[-1],DATA!C[-2],VYPOČET!RC[-1])"
Range("C5").AutoFill Destination:=Range("C5:C" & PoslRadek)
Range("C5:C" & PoslRadek).Copy
Range("C5:C" & PoslRadek).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
Range("A1").Select
End Sub

No jedno riešenie pomocou maticových vzorcov je napr. takéto, ale je veľmi výpočtovo náročné. Treba vymyslieť niečo iné, možno nejaké pomocné stĺpce, makro, ...
Len upresním, či som to pochopil. Ak je v posledný dátum daného ID jeho stav 0, teda je neaktívny, znamená to, že vypíšeme tento posledný dátum celkovo pre dané ID ako END, a aj prvý dátum celkovo pre dané ID ako ŠTART.
Ak je ale v posledný dátum daného ID jeho stav 1, teda je aktívny, znamená to, že vypíšeme tento dátum ako ŠTART, a END dátum je nič.

Iný pr.:
Sub Vypln()
With ThisWorkbook.Worksheets("VYPOČET")
With .Cells(5, 3).Resize(.Cells(Rows.Count, 2).End(xlUp).Row - 4)
.FormulaR1C1 = "=SUMIFS(DATA!C[-1],DATA!C[-2],RC[-1])"
.Value = .Value
End With
End With
End Sub


príp.:
Sub Vypln2()
With ThisWorkbook.Worksheets("VYPOČET")
With .Cells(5, 3).Resize(.Cells(Rows.Count, 2).End(xlUp).Row - 4)
.Value = Evaluate("=IFERROR(SUMIFS(DATA!$B:$B,DATA!$A:$A,$B5:$B" & .Rows.Count + 4 & "),"""")")
End With
End With
End Sub


Bodla by príloha.

A koľko tých riadkov tam bude asi väčšinou zaplnených, a koľko z nich asi bude vyhovovať? Ide o to, že či bude rýchlejší filter, porovnávanie poľa, či Find ...

Akurát netuším, ako to chcete radiť (zoraďovať). Neviem, koľko budete mať riadkov, ale myslím, že keby sa to malo nasadiť na veľké množstvo dát + zoraďovanie vzorcom (kde sa X-krát počíta to isté), tak to bude výpočtovo neúnosné...

Ale asi som si mal radšej na dobrú noc klepnúť po paprči :)

Príklad...
Tie Vaše makrá som Vám tam nechal, len som pridal makro Najdi.

Môj názor : Celý problém je v jery-m.
-bez prílohy
-vágne podanie (čo znamená "Nepomohlo"?, hádže chybu 1004 alebo nepodáva očakávaný výsledok?)
-neodpovedanie na otázky (13.10.2017 11:51)

Podľa mňa to, na čo sa pýta, teda "co je špatně na tomto příkazu", má zodpovedané - špatně je L vs J.
A teraz je jedno či priamo alebo nepriamo cez set rng. Ak mu to nefunguje (chybová hláška) priamo ani nepriamo, tak môže byť problém v dátach. Napr. zlúčené bunky alebo čo ja viem. A to súvisí s 1. jeho chybou - bez prílohy.

A čo nepomohlo? Zmena rozsahu z A1:J792 na A1:L792, alebo zmena Array(2, 3, 6, 7, 8, 12) na Array(2, 3, 6, 7, 8) ? U mňa funguje aj jedno aj druhé. Priložte prílohu.

Tipujem : 12. stĺpec je L, a rozsah máte A:J.

Nepozeral som ešte na riešenie od kolegu, ale zdá sa mi makro zbytočné. To sa dá overiť aj vzorcom, ak to dobre chápem...

A skúšal ste ten filter aj vypnúť, ako radí Havran ?
Alebo napr aj takto:
Sub NSTDaProdej()
With Sheets("Nstd")
If .FilterMode Then .ShowAllData
.Range("$A$1:$I$501").AutoFilter Field:=10, Criteria1:=CBool(1)
End With
End Sub


Inak v E2016 Pro x64 SK funguje aj True aj "True" aj CBool(1).

Takto zistíte status pre daný podnik s jeho najvyšším dátumom (maticový vzorec Ctrl+Shift+Enter).
=INDEX($B$2:$B$170;MATCH(MAX(IF($A$2:$A$170=A2;$C$2:$C$170));$C$2:$C$170;0))
=INDEX($B$2:$B$170;POZVYHLEDAT(MAX(KDYŽ($A$2:$A$170=A2;$C$2:$C$170));$C$2:$C$170;0))

Príklad vzorcami aj makro-UDF.

Pr.
A = Right(A, Len(A) - InStrRev(A, Application.PathSeparator))
alebo
A = Split(A, Application.PathSeparator)(UBound(Split(A, Application.PathSeparator)))

Tak to očúrajte poupravením vzorca od eLCHa a je to tak na 99,4569832000001 %.
Definovaný názov KONIEC:
=MID($A1;FIND("#";SUBSTITUTE($A1;" ";"#";LEN($A1)-LEN(SUBSTITUTE($A1;" ";""))))+1;1000)
=ČÁST($A1;NAJÍT("#";DOSADIT($A1;" ";"#";DÉLKA($A1)-DÉLKA(DOSADIT($A1;" ";""))))+1;1000)


Ulica:
=IF(OR(ISNUMBER(--LEFT(KONIEC;1));ISNUMBER(--RIGHT(KONIEC;1)));KONIEC;"")
=KDYŽ(NEBO(JE.ČISLO(--ZLEVA(KONIEC;1));JE.ČISLO(--ZPRAVA(KONIEC;1)));KONIEC;"")


Číslo (ak nieje, tak ""):
=IF(OR(ISNUMBER(--LEFT(KONIEC;1));ISNUMBER(--RIGHT(KONIEC;1)));LEFT(A1;FIND("#";SUBSTITUTE(A1;" ";"#";LEN(A1)-LEN(SUBSTITUTE(A1;" ";"")))));A1)
=KDYŽ(NEBO(JE.ČISLO(--ZLEVA(KONIEC;1));JE.ČISLO(--ZPRAVA(KONIEC;1)));ZLEVA(A1;NAJÍT("#";DOSADIT(A1;" ";"#";DÉLKA(A1)-DÉLKA(DOSADIT(A1;" ";"")))));A1)

Za číslo na konci sa považuje prípad, aj je prvý alebo posledný znak číselný. Teda aj "2b", "b2", "6/2" a pod.


Strana:  1 ... « předchozí  167 168 169 170 171 172 173 174 175   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