Příspěvky uživatele


< návrat zpět

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

-Niekde bokom si napíšte do nejakej bunky číslo 1.
-Označte ju, a dajte Ctrl+C.
-Označte všetky dátumy, ktoré sú ako Text.
-Pravý klik na označené - Možnosti prilepenia - Prilepiť špeciálne - Prilepiť špeciálne - Násobenie - OK
-Pravý klik na označené - Formátovať bunky - Dátum - OK.
-Vymažte to číslo 1.

Áno. Cdbl(), ale určite použite aj On Error, lebo ak tam ten dátum nebude, makro padá na chybe. Preto je tam ten On Error. Ak v následnom teste je Err iné ako 0, tak nastala chyba, a dátum tam nieje. Ak je Err=0 tak už robte čo potrebujete s nájdenou pozíciou X.

On Error Resume Next
x = WorksheetFunction.Match(CDbl(Date), Range("A1:AC1"), 0)
If Err>0 then MsgBox "Upoxornenie", vbExclamatoin
On Error Goto 0

marjankaj : To MAX() je super nápad, odbúra sa jeden výpočet NETWORKDAYS.INTL. Ale aj tak musí byť pre každý riadok kompletná sada sviatkov. Prípadne ak nie v pomocných stĺpcoch, tak potom vytvoriť nejakú maticu, ale takto je to asi servisovateľnejšie.

EDIT: Aby som len netrepal, tak ma napadlo jedno megavzorcové maticové riešenie, viď príloha, bez pomocných stĺpcov. Musí byť ale minimálne jeden Definovaný názov, lebo zlúčené bunky nezoberú inak maticový vzorec. Ale aj tak som to rozdelil na 3 Definované názvy, lebo keď sa to spojí do jedného hypermegagigavzorca, tak bude mať asi meter, a nikto ho už nikdy nepochopí :). Sranda aké hovadiny sa dajú robiť v Exceli. Ale toto by som asi radšej nepoužíval, ako vravím, servisovateľnosť od človeka, čo to netvoril je chabá...

Pr.
EDIT: Pardom zabudol som "zabudovať" sviatky pre každý riadok ... príloha vymenená.

Zaznamenal som rovnaký problém. Ale možno by bolo dobré sem priložiť celé zošity (bez citlivých dát).

Private Sub Workbook_Open()
Dim Oblast As Range
Set Oblast = Range(Cells(1, 2), Cells(1, Columns.Count).End(xlToLeft))
On Error Resume Next
If Oblast.Offset(1, 0).Cells(1, WorksheetFunction.Match(CDbl(Date), Oblast, 0)).Value2 = 1 Then MsgBox "Pod dnešným dátumom je hodnota 1.", vbExclamation, "Upozornenie"
On Error GoTo 0
Set Oblast = Nothing
End Sub

Criteria1:="<>" - zobrazí všetky riadky, ktoré majú v danom stĺpci nejakú hodnotu
Criteria1:="" - zobrazí všetky riadky, ktoré nemajú v danom stĺpci žiadnu hodnotu

To "Criteria1:=XYZ" znamená, že XYZ je to, čo chcete mať zobrazené, nie to čo chcete mať skryté. Teda vo Vašom prípade použite
ActiveSheet.Range("$A$8:$AS$150").AutoFilter Field:=38, Criteria1:=""

Vy chcete nájsť riadok s hodnotou v stĺpci A, bez ohľadu na to, či je riadok skrytý alebo nie ?
Tak skúste MATCH
Dim r As Long
On Error Resume Next
r = WorksheetFunction.Match(10, Columns(1), 0)
If Err.Number <> 0 Then r = 0
On Error GoTo 0

a máte riadok. Namiesto toho "r = 0" si dajte vhodnú akciu pre prípad, že položku nenájde.

Myslíte Tool - Options - Editor Format - Font - Curier New (Stredoeurópske) ?
Ja keď to mením napr. na Západné, tak mi akurát v makre napr. z Ř urobí Fí alebo z ľ urobí 3/4, ale odkaz na objekt listu funguje normálne. Každopádne by som odporúčal tie názvy nahradiť, a ak ich máte rozumne nazvané (bez kolízie názvov s inými časťami názvov) tak aj hromadne : Ctrl+F - Replace - Current Project - Direction - All
Find What - názov s diakritikou
Replace With - názov bez diakritiky

Variant 1:
-Zistíme počet buniek ktoré spĺňajú to že v C10:C22 je hodnota z F a zároveň v D10:D22 je hodnota "ano".
-Ak je viac ako 0, napíš "ano".
-Inak zistíme počet buniek ktoré spĺňajú to že v C10:C22 je hodnota z F a zároveň v D10:D22 je hodnota "ne".
-Ak je viac ako 0, napíš "ne".
-Inak nenapíš nič (prípad prázdnej bunky v D10:D22 aj keď hodnota v C10:C22 sedí, alebo prípad ak nič nesedí).

Variant 2 (maticový vzorec Ctrl+Shift+Enter):
-Ak je v C10:C22 hodnota z F, odlož jej poradové číslo.
IF($C$10:$C$22=F10;ROW($C$10:$C$22)-9)
KDYŽ($C$10:$C$22=F10;ŘÁDEK($C$10:$C$22)-9)

To $C$10:$C$22=F10 vráti pole obsahujúce buď TRUE/PRAVDA alebo FALSE/NEPRAVDA pre každú položku.
To ROW($C$10:$C$22)-9 vráti pole poradových čísel {1;2;3;4;5...}. A tam kde bolo TRUE/PRAVDA za zachová toto číslo.
-Teraz zistíme ktoré číslo riadku v danej oblasti je posledné. Pomocou LARGE(pole čísel, číslo pozície):
LARGE(IF($C$10:$C$22=F10;ROW($C$10:$C$22)-9);1)
LARGE(KDYŽ($C$10:$C$22=F10;ŘÁDEK($C$10:$C$22)-9);1)

-No a prečítame si poslednú hodnotu z tých, ktoré spĺňajú podmienku, keď už vieme jej číslo:
INDEX($D$10:$D$22;LARGE(IF($C$10:$C$22=F10;ROW($C$10:$C$22)-9);1))
INDEX($D$10:$D$22;LARGE(KDYŽ($C$10:$C$22=F10;ŘÁDEK($C$10:$C$22)-9);1))

-Ďalej ošetríme chybu
IFERROR(INDEX($D$10:$D$22;LARGE(IF($C$10:$C$22=F10;ROW($C$10:$C$22)-9);1));"")
IFERROR(INDEX($D$10:$D$22;LARGE(KDYŽ($C$10:$C$22=F10;ŘÁDEK($C$10:$C$22)-9);1));"")

-No a na záver je už iba zbytočný REPT
=REPT(IFERROR(INDEX($D$10:$D$22;LARGE(IF($C$10:$C$22=F10;ROW($C$10:$C$22)-9);1));"");1)
=OPAKOVAT(IFERROR(INDEX($D$10:$D$22;LARGE(KDYŽ($C$10:$C$22=F10;ŘÁDEK($C$10:$C$22)-9);1));"");1)

Ten REPT/OPAKOVAT je tam len preto nech nevznikne možno neželaná hodnota 0. Ale to by ste mohol radšej cez vlastný formát odstrániť.
Proste podľa toho čo potrebujete a podľa toho aké majú byť výsledky sa potom ešte toto upravuje.

Odkrokujte si tie vzorce vo Vzorce - Kontrola vzorce - Vyhodnotiť vzorec, a uvidíte čo to robí. Vráti to poslednú položku z D10:D22, nech je akákoľvek.

2 návrhy. Uvidím, či prídete na to aký je medzi nimi zásadný rozdiel ...

Musíte sa zaregistrovať, aby ste mohol prikladať prílohy (.xlsm musíte zazipovať, ostatné rovno vložiť).

?
=IF(COUNTIFS(G$2:G2;G2;F$2:F2;F2)=1;SUMIFS(D:D;G:G;G2;F:F;F2);"")
=KDYŽ(COUNTIFS(G$2:G2;G2;F$2:F2;F2)=1;SUMIFS(D:D;G:G;G2;F:F;F2);"")


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