Příspěvky uživatele


< návrat zpět

Strana:  1 ... « předchozí  13 14 15 16 17 18 19 20 21   další » ... 286

Celý koncept logovania zmien do iného Excel súboru je čisto nereálny. Pri každej zmene bunky sa otvára súbor, vkladajú hodnoty (ešte aj to nešťastným spôsobom po jednej), súbor sa uloží a zavrie. Môžete mať akokoľvek rýchly PC, toto bude v sekundách pri každej zmene. Navyše nepočítate s reálnou možnosťou zmeny viacerých buniek naraz.

Schodnejšie by bolo rýchle ukladanie do TXT súborov. A tie by sa hromadne načítali cez PQ v kontrolnom súbore.

EDIT:
Napadlo ma ešte, jedine, že by sa vytvorila nová skrytá inštancia Excelu, a ten kontrolný súbor by bol v nej otvorený, potom by bolo logovanie rýchle. Ale ten kontrolný súbor by sa potom nedal otvoriť, pokým by nebolo nejako vyvolané jeho skryté zatvorenie (nap. ukončením pôvodného zošitu, alebo tlačítkom, a apod.)

???
Čože???
Aká prvá verzia to vloží ako hodnoty?
Veď obe verzie makra vložia do bunky výslednú hodnotu.

Čo chcete aby bolo vo výslednej bunke?
-výsledná hodnota z $J$1:$AW$1 podľa nájdeného indexu J4:AW4<0 (alebo "No Shortage")
-vzorec "=IFERROR(INDEX($J$1:$AW$1;POZVYHLEDAT(PRAVDA;J4:AW4<0;0));"No Shortage")"
???

Chcete aby makro vložilo do bunky vzorec?
Sub Makro3()
wsList.Range("M7").FormulaArray = "=IFERROR(INDEX($J$1:$AW$1,MATCH(TRUE,J4:AW4<0,0)),""No Shortage"")"
End Sub

Príkladov môže byť množstvo. Ide aj o to, koľkokrát to budete robiť. Napr:
Sub Makro1()
Dim Vysledok
Vysledok = Evaluate("=IFERROR(INDEX($J$1:$AW$1,MATCH(TRUE,J4:AW4<0,0)),""No Shortage"")")
wsList.Range("K7").Value = Vysledok
End Sub

Sub Makro2()
Dim Vysledok, Hladaj(), i As Long
Vysledok = "No Shortage"
Hladaj = wsList.Range("J4:AW4").Value
For i = 1 To UBound(Hladaj, 2)
If Hladaj(1, i) < 0 Then
Vysledok = wsList.Range("J1:AW1").Cells(i).Value
Exit For
End If
Next i
wsList.Range("L7").Value = Vysledok
End Sub

Raz som sa pokúšal niečo trošku podobné spáchať známemu do práce na uľahčenie identifikácie, kedy vznikol problém. Tam sa jednalo o 100-200 GB takýchto logov. To bolo pár desiatok senzorov na jednom mieste, tých miest desiatky po celom svete, a vždy asi do 5 druhov úplne iných dát a s iným časovaním. Každú sekundu, každé 3, akokoľvek rýchlo sa len dalo a nepravideľne, každých približne 5 s ale iba v noci, atď. Zariadenia spolupracovali interkontinentálne. On mal spätne aj rok dozadu zisťovať, kedy sa začali kumulovať odchýlky, ktoré nakoniec po roku viedli spolu k problému. Presnosť na 5-6 desatín. To bolo nevyriešiteľné. Nakoniec sme to vzdali.
Ale myslím, že sme vtedy došli k záveru, že sme považovali všetky hodnoty za stálu pokiaľ neprišlo k zmene. Vtedy sme v PowerQuery vypĺňali hodnoty smerom nadol po sekundách predchádzajúcou hodnotou. Takže by to asi mohlo byť, tak ako to máte - nájde prvý menší čas. Aspoň to. Ešte skúsim porozmýšľať, ale nič nesľubujem.

Po započítaní stabilizácie 0:30 a začiatku v A6 je oblasť DATA M35:AS186 a MAX je 51,6. A tá nastala na riadkoch 91-130 sond 51 a 53. Teda všetky posuvy stabilizácie, ktoré nastavia začiatok oblasti DATA na riadky od 35-130, budú mať rovnaké MAX. Až keď nastavíme stabilizáciu na 2:06 (alebo nastavíme začiatok na A101 a stabilizáciu na 0:30) sa dostaneme na iné MAX a to 51,5.

Ale inak je tam dosť skreslení. Tie dáta ťaháte pomocou vzorcov z listov sond, ale nie presne v daný čas a približne -> menší nájdený. Nie každá sonda loguje v rovnaký čas. Potom to skresľujete pripočítaním stabilizácie, kde sa hľadá tiež približný menší čas (neviem odkiaľ sú tie časy v Vyhodnocení!A:A, každopádne logicky nekorešpondujú s časmi a hodnotami v listoch sond). Potom sa to ešte znepresňuje pomocou "nejistotaT". Takže MIN a MAX je deformované. A navyše pri výpise názvov sond sa nezohľadňuje deformované MIN MAX. A logicky ani nemôže, lebo by mohla nastať situácia, keď by sa deformovaný (dopočítaný) MIN/MAX reálne v sondách nenachádzal, a zoznam sond by bol prázdny. Teda zoznam sond nezodpovedá MIN/MAX.
Ale možno nad tým len veľa uvažujem, takto na noc ... 5

Konkrétny príklad:
Začíname na A101, stab. 0:30, neistota 0,5 : MAX je 52 - v oblasti sa ale vôbec nenachádza.

Ale bez tej korekčnej (no zároveň deformujúcej) stabilizácie a neistoty, to nebude zodpovedať tiež. Viď vyššie, ale aj prípad, keď posunutý čas má oveľa bližšie napr. väčšiemu maximu o riadok/sekundu nižšie, pričom sa bude ale počítať údaj oveľa ďalej od nameranej hodnoty (čas - stabilizácia).

Múdre hlavy, kde ste? Na pive? 9

Idem spať...

Nemám Excel s funkciou UNIQUE, a ani ju v tomto prípade netreba. Za predpokladu, že sú dáta v A:A zoradené, by som rozsah oblasti dát určil pomocou MIN, MAX a OFFSET. Potom už iba maticový COUNTIF a TEXTJOIN.

A ešte vysvetlite ten "Čas stabilizace" a "Nejistota měření teplota"

Skontrolujte popis a prílohu. Vami udávané príklady (42,7) sa tam nenachádzajú.

Oblasť dát "DATA":
=OFFSET(Vyhodnocení!$M$1:$AS$1;MATCH(Úvod!$B$2;Vyhodnocení!$A:$A;0)-1;;MATCH(MAX(Vyhodnocení!$A:$A);Vyhodnocení!$A:$A;0)-MATCH(Úvod!$B$2;Vyhodnocení!$A:$A;0)+1)
=POSUN(Vyhodnocení!$M$1:$AS$1;POZVYHLEDAT(Úvod!$B$2;Vyhodnocení!$A:$A;0)-1;;POZVYHLEDAT(MAX(Vyhodnocení!$A:$A);Vyhodnocení!$A:$A;0)-POZVYHLEDAT(Úvod!$B$2;Vyhodnocení!$A:$A;0)+1)

MIN / MAX:
=MIN(DATA)&" / "&MAX(DATA)
SONDA:
=TEXTJOIN(",";TRUE;IF(COUNTIF(OFFSET(DATA;;COLUMN(Vyhodnocení!$M$1:$AS$1)-13;;1);MIN(DATA))>0;Vyhodnocení!$M$3:$AS$3;""))&" / "&TEXTJOIN(",";TRUE;IF(COUNTIF(OFFSET(DATA;;COLUMN(Vyhodnocení!$M$1:$AS$1)-13;;1);MAX(DATA))>0;Vyhodnocení!$M$3:$AS$3;""))
=TEXTJOIN(",";PRAVDA;KDYŽ(COUNTIF(POSUN(DATA;;SLOUPEC(Vyhodnocení!$M$1:$AS$1)-13;;1);MIN(DATA))>0;Vyhodnocení!$M$3:$AS$3;""))&" / "&TEXTJOIN(",";PRAVDA;KDYŽ(COUNTIF(POSUN(DATA;;SLOUPEC(Vyhodnocení!$M$1:$AS$1)-13;;1);MAX(DATA))>0;Vyhodnocení!$M$3:$AS$3;""))

Práveže je to úplne bežná vec, že človek naimportuje data ako text z textového súboru (áno CSV export je textový súbor), a nesprávne priradí/nepriradí formát dát. Tým pádom je dátum text. V správnom formáte je totiž dátum číslo. Museli by ste dať prílohu.

Nie som už na mojom PC, tak len z mobilu...
Samozrejme, že to chybu napisať môže. Stačí vzorec obaliť do IFERROR() funkcie.
Samozrejme, že to ide makrom. Pozeral som na tie makrá. No, keď pridem, tak Vám to prerobím. Nemáte tam napr. dobrú kontrolu pri zmene na liste, ale hlavne Vám to pomocou Spinneru nefunguje preto, lebo Spinner nevyvolá udalosť zmeny listu. Napriek tomu, že mení prepojenú bunku. Treba mu priradiť makro, ktoré iba tú bunku znovu prepíše sebou.
Atď...

Príloha bola veľmi veľká, preto Vám ju nezobralo ani v ZIP. Treba prílohu vždy skrátiť pod 300 kb (neviem presný limit). Stačí odmazať tie tisíce riadkov.

Na takýto výpis to makro nepotrebujete. Stačí vzorec.

Veď to môžete urobiť vzorcom VLOOKUP alebo MATCH+INDEX.
Hoďte nejakú prílohu do toho ZIP-u.

Pridaním dvoch podmienok ľahko zabránite takémuto zlyhaniu.

EDIT 25.7.2023 14:49
Urobil som ešte jednu podmienku, aby sa to vysporiadalo so všetkým, čo ma napadlo, ako ste to mohol myslieť s tými prázdnymi riadkami.

@Milan-158: Ak dám Súbor - Otvoriť - Ako tabuľka XML - OK na hlášku o schéme, tak mi otvorí (porozbaľuje subTables), a môžem si zmeniť aj uložiť čo chcem. Vytvorí sa na ten súbor XML prepojenie, ktoré môžem odstrániť.
Aký požadujete výsledok?

Čo znamená "odkáže na řádek kde je počet jmen" ? Ktorý riadok z tých 4-och, na ktorých sa používa premenná PocetMien, máte na mysli?
Snáď nie tento?
V(PocetMien + 2, x) = D(i, 5) / (D(i, 4) - D(i, 3) + 1)
Lebo tam to spadne vtedy, ak zadáte ako píšete nové meno. Iba meno. Bez dát, s ktorými makro samozrejme počíta, že nasledujú.

O365 a O2021 ju majú. Ja ju nemám, ale zápis v správcovi by mohol byť asi
=FILTER($B$3:$B$200;$B$3:$B$200<>"")

Áno písal som to natvrdo. Iba som postupne vyďobával v každej Table jej subTable (v danom riadku - väčšinou {0} a v danom [stĺpci]), až som sa dostal k dátam. Iba som to zreťazil.

Asi by to šlo aj inak, napr. načítať to ako text a parsovať (rozdeliť podľa značiek), alebo má na to možno PQ aj origo fičurku na výcuc dát podľa značky, ale to nepoznám.


Strana:  1 ... « předchozí  13 14 15 16 17 18 19 20 21   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

Relativní cesta - zdroje Power Query

elninoslov • 25.4. 9:02

Vynásobit hodnoty kurzem - Power Query

elninoslov • 25.4. 8:40

Relativní cesta - zdroje Power Query

Alfan • 25.4. 8:04

Relativní cesta - zdroje Power Query

elninoslov • 25.4. 0:34

Vynásobit hodnoty kurzem - Power Query

Alfan • 24.4. 16:32

Relativní cesta - zdroje Power Query

Alfan • 24.4. 15:44

Relativní cesta - zdroje Power Query

elninoslov • 24.4. 14:26