Příspěvky uživatele


< návrat zpět

Strana:  1 ... « předchozí  223 224 225 226 227 228 229 230 231   další » ... 298

Mne by to vyhovovalo asi takto:

No tak si dajte do "Měsíční rozdíl" do prvej bunky podmienku
=IF(D28="";"";D28-B28)
=KDYŽ(D28="";"";D28-B28)

A rorkopírujte ťahaním vzorec až dole.
Adekvátne si to urobte aj v ostatných stĺpcoch, akurát to "D28-B28" zamente za výpočet aký tam máte.

Tie dáta v H je pekná prasárna. Raz sú tam medzery, raz nie, raz vbLf, raz vbCrLf. Tieto dáta musia byť ako TEXT, lebo sa môže stať, že Vám to Excel interpretuje ako dátum.
Tu máte jedno komplikované riešenie komplet cez VBA aj s jedinečnými hodnotami, zoradením a výpisom výsledku.

Ten vzorec od eLCHa je krásny - jednoduchý. Dúfam, že len kvôli zle zadaným dátam v H mi dáva na liste 05 pri "3.1.1" počet 23, a makro dá 22. Ak je to kvôli niečomu inému, tak mám chybu v kóde. Inak kód trvá zlomok sekundy.

Rozšírený filter ???

To bez prílohy dobre optimalizovať nepôjde.
Ide o to či nemôžete použiť na vyhľadávanie posledného riadku jeden stĺpec v ktorom viete že sú vždy dáta, takto prehľadávate všetko. Ďalej či sa dajú použiť polia (či ide o súvislé oblasti). Ďalej ide o zbytočnosti ako
If Not Intersect(Cells(2, 2), Range("B:B")) Is Nothing Then
To Vám nedá nikdy nič iné ako True, je to totiž bez premennej.
Alebo
Workbooks(wrkb_act).Activate
Pri prenášaní zo zošitu do zošitu nemusíte prepínať okná, zadefinujte si premenné
WBZdroj a WBCiel a odkazujte rovno na ne.
Ďalej použite na začiatku makra
Application.ScreenUpdating = False
a na konci
Application.ScreenUpdating = True
Prečo vôbec voláte "Uloz_Data" ? Veď to zapisujte rovno.
Na začiatku
Call Uloz_Data(i, "D", value)
...

Zapíšte to naraz v poli, napr. (teraz iba zbrucha) :
WBCiel.Cells(i,4).Resize(,4)=Array("#NENÍ_K_DISPOZICI","#NENÍ_K_DISPOZICI","#NENÍ_K_DISPOZICI","#NENÍ_K_DISPOZICI")
a do stĺpca S samostatne.
...
...
...

Ach tá bodka (pred "cbNazev")...
Dnes robím 3 veci naraz, a štvrtá je na ceste. Aj tak to vyzerá.
Sub NaplnCombo()
Dim a()
With ThisWorkbook.Worksheets("Pokus")
a = .Cells(1, 6).Resize(3, 2).Value
With .Shapes("cbNazov").OLEFormat.Object.Object
.Clear
.List = a
End With
End With
End Sub

Sub NaplnCombo2()
Dim a()
With ThisWorkbook.Worksheets("Pokus")
a = .Cells(1, 6).Resize(3, 2).Value
With .cbNazov
.Clear
.List = a
End With
End With
End Sub

Ďakujem, fungujú obe.

Už som na to prišiel, je potreba
ActiveSheet.Shapes("ComboBox1").OLEFormat.Object.Object
ja som to skúšal o jedno ".Object" menej, preto to nešlo :)

Aj tak ďakujem.

PS: a dá sa potom urobiť aj
.List = arr 'pole

Napr.

EDIT: Aha, beriem späť, také jednoduché to nieje. Je tam pár ďalších podmienok, ako krásne ukazuje
článok
postovaný uživateľom pidlla na
inom fóre

Zdravím Vás.

Prosím Vás, už sa tu trápim, ide vôbec naplniť dvojstĺpcový ActiveX ComboBox na liste (nie na formulári), hodnotami napevno makrom ? Bez ListFillRange, bez akejkoľvek oblasti, proste z poľa hodnôt.

.AddItem xxx - nepozná
.List = Array - nepozná

Ďakujem.

Tak skúste
Workbooks.Open Filename:="C:\Users\......xlsx", Updatelinks:=0

Tiež to mám navrhnuté cez KT, ale vidím tam problém v samotných zdrojových dátach. Napr. riadok 717 a 718. KONIEC je skôr ako ZAČIATOK. To eLCHa poriešil tak, že zoradil Dátum. Alebo 747 a 750 pravdepodobne nemá KONIEC. Na to sa dá urobiť výnimka.
Alebo napr. 384 a 385 sú dva Začiatky po sebe v rovnaký čas na rovnakú prácu rovnakým človekom. Následne sú 392 a 397 dva Konce. Toto vnorenie zatiaľ neviem vyriešiť vzorcom.

Z niektorého z týchto dôvodov hádže eLCHa-ova KT chybný súčet pri KišacM a StoličnýP.

Posielam tiež teda nejaký návrh, s komplikovanejším vzorcom...

Ak cez UDF, tak by som to určite nerobil cez Cells ale cez Array. Rozdiel v rýchlosti je u mňa cca 7 násobne menší.
Public Function SUMIFX(OblastDat As Range, OblastH As Range, Horizontal As Single, OblastV As Range, Vertical As Single)
Dim Hodnota As Single, HOblastDat(), HOblastH(), HOblastV(), x As Integer, y As Long, ub As Integer

Application.Volatile

HOblastDat = OblastDat: HOblastH = OblastH: HOblastV = OblastV
ub = UBound(HOblastH, 2)

For y = 1 To UBound(HOblastV, 1)
For x = 1 To ub
If HOblastH(1, x) = Horizontal And HOblastV(y, 1) = Vertical Then Hodnota = Hodnota + HOblastDat(y, x)
Next x
Next y

SUMIFX = Hodnota
End Function

Keďže žijeme v zemepisných šírkach, kde píšeme zľava do prava, predpokladáme že posledná znamená vpravo. Teda (maticovo):
=INDEX(E5:Z5;;MAX(IF(E5:Z5<>0;COLUMN(E5:Z5)-4)))
=INDEX(E5:Z5;;MAX(KDYŽ(E5:Z5<>0;SLOUPEC(E5:Z5)-4)))

ale Vaše príklady v zošite popisujú čísla vľavo, teda po našom prvé, nie posledné, teda si iba vymente MAX za MIN.

EDIT: Alebo
=INDEX(E5:Z5;;MATCH(TRUE;E5:Z5<>0;0))
=INDEX(E5:Z5;;POZVYHLEDAT(PRAVDA;E5:Z5<>0;0))

Asi tu dostanem s latou po krížoch, ale nenapadá ma iné, ako to zreťaziť do megavzorca.

Na skúšku som pridal v Tools do U4 a X4 hodnoty, ktoré sa prejavia v Souhrn E7.

Ak sú tie oblasti vždy súvislé tak potom môžete aj takto, do E31 zadajte toto, a nakopírujte doprava:
=SUM(OFFSET($E$5;MATCH(E$29;$C$5:$C$23;0)-1;MATCH(E$28;$E$2:$Z$2;0)-1;COUNTIF($C$5:$C$23;E$29);COUNTIF($E$2:$Z$2;E$28)))
=SUMA(POSUN($E$5;POZVYHLEDAT(E$29;$C$5:$C$23;0)-1;POZVYHLEDAT(E$28;$E$2:$Z$2;0)-1;COUNTIF($C$5:$C$23;E$29);COUNTIF($E$2:$Z$2;E$28)))


EDIT:
A napr takto (maticový vzorec), to zráta aj ak nebudú súvislé :
=SUMPRODUCT((ROW($E$5:$Z$23)=IF($C$5:$C$23=E$29;ROW($C$5:$C$23)))*(COLUMN($E$5:$Z$23)=IF($E$2:$Z$2=E$28;COLUMN($E$2:$Z$2)));$E$5:$Z$23)
=SOUČIN.SKALÁRNÍ((ŘÁDEK($E$5:$Z$23)=KDYŽ($C$5:$C$23=E$29;ŘÁDEK($C$5:$C$23)))*(SLOUPEC($E$5:$Z$23)=KDYŽ($E$2:$Z$2=E$28;SLOUPEC($E$2:$Z$2)));$E$5:$Z$23)


Strana:  1 ... « předchozí  223 224 225 226 227 228 229 230 231   další » ... 298

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