Nenapadá ma možnosť ako toto urobiť bez makra. Ak zaškrtnete Zalomiť text, tak sa riadok prvý krát rozšíri, no už sa nezúži naspäť, ak ďalšie vyhľadávanie požaduje len úzky riadok. A v PF sa zalamovanie nastaviť nedá.
Kurňa chlape, to nemôžete napísať rovno všetko tak ako to je, a priložiť anonymizovanú prílohu? Veď nič, čo ste písal nesedí s realitou. Bunky sú úplne iné, rozsah nie je ani bunka, ako ste spomínal, ani stĺpec ako ste neskôr tvrdil, ale samostatné oddelené oblasti. Nejde o zmenu ale o výpočet, na čo Excel pozerá úplne odlišne. Takže nejaký Target a Intersect je Vám v procedúre Calculate k ničomu. Rozlišovacie stavy nie sú "Sledované", ale nejaké "SELL", "BUY", NO". Bunky nie sú vedľa seba aby sa dal použiť zápis poľa naraz ...
Ste dnes už druhý, čo ma nakrkol ...
Čo s Vami ?
Prílohu !
Oznam pomocou formulára (sám zmizne), zistí počet riadkov podľa A:A, vypíše dosiahnuté hodnoty aj limity, mená a časy. Hodnoty zapíše. Reaguje na hromadné zmeny (jednotky, menšie desiatky). Ak je treba reagovať na 100-ky až tisíce naraz, treba to prekopať na polia z prípadných zmenených Areas, a robiť rovnako zápis polí do Offset-nutých Areas. Aj tak to bude spomaľujúce. Ak sa bude jednať o kontrolu 10-ok tisíc hodnôt tak jedine na kliknutie tlačidla, lebo "za letu" to bude s požadovaným zápisom do buniek pomalé. Iné so zápisom hodnôt, časov, funkciou Štart/Stop ma nenapadá...
Myslíte toto ?
Link1, Link2
Musíte to mať ako Connection.
Ale makrom prichádzate o Undo.
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("B2")) Is Nothing Then
If Range("E2").Value = "Sledovanie" Then
If Range("B2").Value >= Range("C2").Value Then
Range("D2").Value = Now
Range("E2").Value = "STOP"
End If
End If
End If
If Not Intersect(Target, Range("E2")) Is Nothing Then
If Range("E2").Value = "Sledovanie" Then
If Not Range("E2").FormulaHidden Then 'Vlastnosť bunky využitá na uchovanie predchádzajúceho stavu sledovania
Range("D2").ClearContents
Range("E2").FormulaHidden = True
End If
Else
Range("E2").FormulaHidden = False
End If
End If
End Sub
Ale pozor. Takisto nebude fungovať, ak budú v dátach medzery. Treba si ujasniť, či chcete zapisovať na prvý voľný alebo za posledný zaplnený. To je rozdiel. A samozrejme, či bude použitý filter a či sa jedná o objekt Tabuľka, alebo iba obyč tabuľka, ďalej či to má hlavičku a na ktorom riadku (to u Vám má na riadku 1)...
Worksheets("Hárok1").Columns("B").Cells.Find(What:="", After:=Worksheets("Hárok1").Range("B1"), LookAt:=xlPart, LookIn:=xlFormulas, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False).Resize(, 5).Value = Array(TextBox1.Text, ComboBox1.Text, ComboBox2.Text, ComboBox3.Text, ComboBox4.Text)
ďalej je možnosť SpecialCells(xlCellTypeLastCell), a tiež ak budú napr. posledné riadky vyfiltrované vracia nesprávny výsledok.
Super. Urobil som obdobnú skúšku:
zdroj xlsx - 2,2 MB
PQ bez filtra do Tabuľky - 750 kB
PQ bez filtra iba prepojenie - 16 kB
PQ bez filtra iba prepojenie + dátový model - 557 kB
PQ s filtrom do Tabuľky - 476 kB
PQ s filtrom iba prepojenie - 16 kB
PQ s filtrom iba prepojenie + dátový model - 553 kB
Ten pokus s veľkosťou súboru ste nerobil?
Nie som teraz pri PC, ale myslím si, že ak ten filter robíte v tom načítacom PQ, tak tue odfiltrované riadky v súbore nie sú. Keď prídem urobím pokus, alebo skúste Vy.
Hmm "každý ma v PC svoju kópiu". A ako sa dostane nejaký kontrolný/zlučovací súbor do PC tých 4-och užívateľov?
Ak Vám ich pošlú napr. mailom, alebo ich nahrajú na cloudové úložisko, tak sa dá zlúčenie všetkých vyplnených dát urobiť v nejakom kontrolnom súbore cez makro, alebo cez PowerQuery. Ale ten kontrolný súbor musí mať prístup na všetky 4 súbory.
Nie som si istý, či to je OK. Ale možno nad tým rozmýšľam zle. Ak zadám 50 000, tak je dolný limit 40 000 a horný 50 000, alebo platí že je dolný 50 000 a horný 60 000? Treba si ujasniť, či náklady v A:A sú "od", "do", "od vrátane", "do vrátane".
Len si dajte pozor pri .End(xlDown/xlUp). Ak máte filtrované riadky nefungujú správne. Vtedy treba použiť metódu .Find(...).
Príklad:
-klik na filtrovaciu šípku stĺpca "Kód akce"
-Filter Textu - Začína na
-Rozšírené - Pridať klauzulu
-obe pridané klauzuly dať typ "Alebo"
-všetky 3 klauzuly dať operátor "začína na"
-prvá PR, druhá ESP, tretia ESB
let
Zdroj = Excel.CurrentWorkbook(){[Name="Tabuľka1"]}[Content],
#"Zmenený typ" = Table.TransformColumnTypes(Zdroj,{{"ID", Int64.Type}, {"Kód akce", type text}, {"Datum zaúčtování", type datetime}, {"Popis", type text}}),
#"Filtrované riadky" = Table.SelectRows(#"Zmenený typ", each Text.StartsWith([Kód akce], "PR") or Text.StartsWith([Kód akce], "ESP") or Text.StartsWith([Kód akce], "ESB"))
in
#"Filtrované riadky"
Základ je vždy reštart zariadenia, aby nabehol odznovu OS aj nanovo ovládače na myš/touchpad/USB atď. To, že Vám to začalo pred 2 týždňami, by mohlo naznačovať nejakú aktualizáciu Office prípadne automatickú aktualizáciu ovládača napr. TouchPadu. Lenže nerobí to žiadne problémy inde. A to sú tie najhoršie identifikovateľné problémy, ktoré sa prejavujú nesystematicky, náhodne, nepravidelne, a ich odstránenie je lotéria nápad->pokus->omyl->náhoda->zabralo
Skúsil by som (hoci je to pracné) vyrobiť z funkčného súboru nový, a naládovať ho dátami z toho nefunkčného. Uložiť nový a vyskúšať. Potom aktualizovať Office ak je dostupná nejaká aktualizácia. Aktualizovať ovládač myši/TouchPadu od výrobcu, ak nie, tak Odstrániť zo Správcu zariadení, nech si ho nájde a nahodí znovu OS sám. Následne reštart.
Je to divné, lebo ten súbor nám ide.
A klasická rada zo slávneho seriálu - "Vypnúť, zapnúť" nepomáha? Pretože to fakt fičí, a môže to byť aj niečo na úrovni OS/Driveru.
Áno, presne o to sa pokúša. Je zaujímavé, že nastavenie tých príznakov xlReadOnly/xlReadWrite spôsobí ReOpen, viď príloha
Snáď to chápem správne.
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.