Alebo bez maticového zápisu
=SUMPRODUCT(--(B3:B13<B2:B12))
=SOUČIN.SKALÁRNÍ(--(B3:B13<B2:B12))
Vzorcom to fungovať nebude. Vzorec sa aktualizuje pri každom prepočítaní listu, teda by tam bol vždy aktuálny dátum, nie ten čo bol pri naskenovaní. Vzorec dokáže uchovať vlastnú hodnotu iba ak je zapnutý Iteračný výpočet v Nastaveniach Excelu. Problém ale je pri prenose takého súboru inde ako na takto nastavený Excel. Riešenie vidím v makre. Príklad, ktorý zvládne aj hromadné zmeny v A (Vám by stačilo na 1 bunku), pričom pri prázdnej A maže D, pri nejakej hodnote v A zapíše čas do D, všetko v daných riadkoch.
Inak vzorec pre Iteračný výpočet by mohol byť zhruba
=IF(A2<>"";IF(D2<>"";D2;NOW());"")
=KDYŽ(A2<>"";KDYŽ(D2<>"";D2;NYNÍ());"")
EDIT: Neskoro. Kým som to dopísal, už to tu máte :)
Na fóre MS odpísali, že to v Exceli nejde, a treba sa pokúsiť to vyriešiť cez API, alebo ručne.
Na stackoverflow je takýto kód, treba poskúšať. Ja duplex nemám.
Každopádne treba pohľadať deklarácie použitých API pre jednotlivé kombinácie Win64/32, Office64/32, VBA6/7, teda PtrSafe, LongPtr, LongLong, a správne podmienene deklarovať cez "#If", a to sa chce málo komu, lebo na LongPtr a LongLong vs Long nieje univerzálne pravidlo pre každú API :(.
Aspoň mne sa teda nepodarilo úspešne sprevádzkovať (bez nepredvídateľného padania) všetky API pomocou pravidiel.
EDIT: Prípadne možno by šlo urobiť makro na posielanie strán na tlač po jednej, podľa PageBreak.
Tak to sa rozpíšte podstatne viac, presnejšie, a ukážte manuálne vytvorený príklad očakávaného výsledku.
Vidím, že podmienkou na zoradenie nieje iba najvyšší súčet "bak" hodnôt, ale ešte sú tam nejaké iné podmienky.
Ale už naposledy.
Tak skúste toho, či som to trafil, lebo mám v tých fotrovcoch a ratolestiach už fakt bordel
Skúste ešte toto, vzorec nedáva TRUE/FALSE (PRAVDA/NEPRAVDA), ale 0/1. Napadlo ma, či náhodou nieje pes zakopaný v CZ Exceli. Prípadne úplne od boku skúste v predposlednom riadku na konci zmeniť
Criteria1:=1
na niečo z tohto
Criteria1:="1"
Criteria1:="=1"
V predošlej verzii, kde je TRUE/FALSE tam skúste
Criteria1:="True"
Criteria1:="=True"
Criteria1:="=" & True
alebo úplnú sprostosť
Criteria1:="Pravda"
Criteria1:="=Pravda"
Dal som to aj do Office2007 na Win7x64 - bez problémov. Dokonca po úprave vzorca som to zfunkčnil aj na XP + Office2003 (bez TextBoxu a musel som upraviť vzorec, lebo Office 2003 nepozná IFERROR ani ActiveX TextBox [nie som si istý], ale makro presunuté do modulu bez zmeny funkčné).
Skutočne netuším ako pomôcť.
EDIT:
Pozrite ešte po "vykonaní" filtru napr. hodnoty 73063080, aké sú možnosti hodnôt vo filtry, keď kliknete na ikonku filtra v A2, a ktorá je zaškrtnutá.
Ak nepočítame Application.ScreenUpdating, tak má makro len 5 riadkov kódu, tak ho odkrokujte.
1. Najskôr odkryte stĺpec A
2. Skontrolujte, či máte povolené automatické počítanie vzorcov.
3. Manuálne úplne zrušte filter A2:H2
4. Zadajte prázdny TextBox
5. Manuálne cez F8 prejdite za riadok
Riadkov = Cells(1, 1).CurrentRegion.Rows.Count
a kurzor myši presuňte nad premennú Riadkov. Napíšte sem hodnotu.
6. Cez F8, prejdite za ďalší riadok, a napíšte hodnotu RiadkovA.
7. Napíšte či prejde kód za Then v riadku s podmienkou
If RiadkovA < Riadkov Then
8. Po prejdení na
If TextBox1.Text = "" Then
skontrolujte či sú vzorce v A od prvého až po posledný záznam. Ak je TextBox prázdny, všetky výsledky v A3:A6287 musia byť TRUE/PRAVDA.
9. Kód nechajte dobehnúť a napíšte ako to dopadlo.
10. Urobte si BrakePoint na prvom riadku kódu
11. Zadajte do TextBoxu číslo 73063080 (naraz kopírovaním, nie písaním). Zopakujte kontroly a rovnako dajte vedieť výsledky krokov 5.-9.
Pozorne čítajte každý krok a každé slovo, a presne napíšte výsledky, ktoré som dotazoval. Inak fakt neviem, môj typ je zakázané prepočítanie vzorcov.
PS: inak v predposlednom riadku treba zmeniť číslo 7 na 8, ale to nemá podstatný vplyv na svoju funkciu rušenia filtra.
Ale ActiveX nepôjdu:
Sub ObjektyVoVybere()
Dim SH As Shape, R As Long, B As Long, L As Long, T As Long, Co As Integer, Ro As Long, SHL As Long, SHT As Long, SEL As String
If TypeName(Selection) <> "Range" Then Exit Sub
With Selection
Co = .Columns.Count: Ro = .Rows.Count
L = .Left: T = .Top: B = .Offset(Ro, 0).Top - 1: R = .Offset(0, Co).Left - 1
End With
With ThisWorkbook.ActiveSheet
For Each SH In .Shapes
With SH
SHL = .Left: SHT = .Top
If SHL >= L And SHL + .Width - 1 <= R And SHT >= T And SHT + .Height - 1 <= B Then SEL = SEL & IIf(SEL = "", "", vbCr) & .Name
End With
Next SH
End With
If SEL <> "" Then ActiveSheet.Shapes.Range(Split(SEL, vbCr)).Select
Set SH = Nothing
End Sub
U mňa to fičí presne podľa požiadaviek. Neviem prečo u Vás nie. Zablokované makrá? Nepovolené ActiveX prvky? Keď zapisujete do bunky (???) B2 ... máte tam vôbec nad ňou cez celú bunku B2 TextBox ? Samozrejme funguje to aj pri zápise do bunky. TextBox je tam na to, aby to robilo hneď po stlačení klávesy. Skúšate to presne na tom súbore, ktorý som poslal ako posledný? Dúfam, že ste to makro nenakopíroval do iného súboru. To nestačí, je tam vzorec v skrytom stĺpci A. Zmente hodnotu v B2, chodte do VBA, a manuálne spustite makro TextBox1_Change(). U mňa všetko funguje (Win10x64+ Office 2016x64 - všetko aktuálne)...
Odkryte si stĺpec A, a pozrite, či hodnoty ktoré majú byť zobrazené majú TRUE/PRAVDA v stĺpci A.
Napadol ma pomocný stĺpec.
1. na to presne som tam urobil ten list "text". Zaškrtnite to políčko "Zleva" a dajte znovu vyhľadať 7306. Ale hodnoty v stĺpci A musia byť ako TEXT, nie ako Číslo alebo Všeobecné.
2. To nieje v Excel bunke možné. Jedine cez malý TextBox, viď nový príklad (opäť list Text)
3. Nie, viď 1. a 2.
Nový príklad
Nejaký ten príklad:
-"čísla" list kde sú filtrované hodnoty číslo - filtrované makrom
-"čísla vzorec" list kde sú filtrované hodnoty číslo - filtrované vzorcom z prvého listu (treba myslieť na rozsahy)
-"text" list kde sú filtrované hodnoty text (možnosť voľby zľava, alebo celok) - filtrované makrom
Uveďte príklad, ako to má vyzerať. To akože do C budete zadávať hodnoty, a tieto hodnoty v C sa Podmieneným Formátom majú nahradiť za "-" v prípade ak v rovnakom riadku v D je hodnota menšia ako 200 ? Tie hodnoty v C ale stále budú, len budú zobrazené ako "-", všetky vzorce s nimi naďalej budú rátať. Otázka mi nedáva zmysel.
Formát buniek:
"-";"-";"-";"-"
Podmienené formátovanie vzorec:
=D4>=200
Podmienené formátovanie formát:
Všeobecné
Ak v tom C niečo počítate, a chcete tam výsledok iba ak je v D viac ako 200, tak formát buniek
0;-0;"-";@
a vzorec:
=IF(D4>=200;výpočet;0)
XLSM musí byť zabalené do ZIP, a nesmie prekročiť 256 KB. Ak to nestačí, použite GoogleDrive a pod...
Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.
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.