Příspěvky uživatele


< návrat zpět

Strana:  1 2   další »

Bez pomocné tabulky (v A1 je testované datum):
=MID("2211333442211133442221133444";MOD(A1+12;28)+1;1)

Vytvořil jsem tabulku pro uvedený 28-denní cyklus směn (lze změnit).
A dále vzorec, který z data vypočítá hledanou směnu.

Kdysi jsem něco takového dělal. Změnil jsem datum, vzor jde také změnit. Zadá se počáteční datum do políčka A3 (modré) a tabulka se přepočítá sama.

Ještě jsem si nainstaloval OnlyOffice, který by měl být dle diskuzí lépe kompatibilní s Excelem. A vypadá to, že v grafu vůbec není žádná možnost zadat alternativní popisek bodu z odkazované buňky L12. Aspoň jsem tu možnost tam neviděl.

Tak jsem zkusil pouze lineární graf bez makra zkonvertovat do formátu xlsx. V Calcu to funguje, ale ztratila se vypočítaná hodnota na pozici L12 zobrazená jako popisek v grafu a také formátování tohoto bodu (první řada v grafu). Když to v Calcu opravím, tak to funguje, ale nejde to uložit do souboru xlsx - píše, že to tento formát nepodporuje. Pravděpodobně to Excel umí, ale asi jiným způsobem.
Ostatní funguje, jenom ten graf není tak vzhledný.

Dle mě by to měl Excel umět načíst, ale pouze bez maker. Makra jsem k tomu přiložil (je to soubor Module1.bas), takže po jejich nakopírování by to teoreticky mělo fungovat. Možná ještě s nějakou drobnou kosmetickou úpravou vzhledu.

Jinak Calc to umí převést do formátu Excelu (uložit jako: například formát xls, nebo xlsx), ale pouze bez těch uvedených maker. A pak zase přidat makra. Takže to by byla druhá možnost.

Podotýkám, že v makrech jsem nepoužil nic specifického pro Calc, takže funkčnost v Excelu by měla být bez jakékoliv úpravy.

Tak jsem přidal do balíku požadovaný lineární graf a vyházel nějaké zbytečnosti. Navíc jsem vyexportoval makra do dalšího souboru pro případné zájemce.

Tak zkusím zip. Omlouvám se, nějak mě to nenapadlo.
Znovu nahráno

Já nemám moc času. Ale vkládám jsem svoje experimentální dílo. Je to v Calcu, Excel nemám. Možná kdyby bylo potřeba, tak to někdo předělá do Excelu. Neměl by to být problém. Nejsou v makrech použity věci co Excel nezná.
Píše mi to nepovolená přípona souboru, tak to sem nedám. Kdyby někdo chtěl, tak mu to pošlu.

Graf není problém nakreslit. Jako ukázku posílám v příloze. Je tam vidět devět zadaných bodů, každé tři proložené interpolační křivkou. A interaktivně se mění černá příčka podle zadání hodnot X a Y. Je tam také znázorněn bod vypočítané hodnoty Z. Myslím, že máš trochu jiné pojmenování (Y a Z prohozeno), ale už jsem to tak nechal.
Je to vlastně to samé co jsem již poslal, jenom je to nakreslené místo výpočtu a hodnoty jsem si nějak zvolil.

Pokud je křivost prostoru, který chceme popsat vyšší než nám umožňuje interpolační funkce, pak výsledek nebude dle očekávání.
Lze to vyřešit dvěma způsoby, buď použijeme podstatně více vstupních bodů než 9, pak funkce bude mnohem složitější, například pro 16 bodů je to kubická křivka ve dvou osách, ale ani to nemusí stačit. Nebo body budeme volit mnohem blíže k sobě, kdy křivost prostoru je mnohem menší a výsledky budou přijatelnější.

Takhle asi vypadají možné hodnoty. Vyloučil jsem data které extrémně vybočovaly.

V dalším obrázku XZ-Y.png je to vidět ještě více. Hodnota od 125 stoupá k 200 pak klesá na 150 a zase stoupá na 225. Což evidentně vypadá na nekvalitní zdroj, pokud to ovšem není záměr. Pak i interpolovaná data půjdou do extrémních vln ...
Vzhledem k tomu že se interpolují data jak v souřadnicích XY tak i YZ tak se obě podivnosti zkombinují a výsledek nemusí vypadat podle očekávání.

Aby interpolace správně fungovala musí být interpolované hodnoty uvnitř bodů. V nejhorším případě aspoň v modrém regionu. Mimo tuto plochu se jedná o extrapolaci a je to víceméně hádání.
V obrázku XY-Z.png je vidět mírný nesoulad dat. Po hodnotě dvě následuje čtyřka a pak trojka a ještě dál pětka, což vypadá na nekvalitní data. Přičemž trojka je vlevo od pětky a čtyřky. Dole zase naopak hodnoty směrem v pravo klesají.

Ještě jsem makro upravil pro zadání všech devíti bodů (Lagrangeova interpolace). Výpočet je znatelně přesnější, není to lineární interpolace, ale kvadratická, takže je proložená křivkami a navíc ve dvou osách. Popis je uvnitř makra. Dal bych sem hotový program, ale nemám Excel, pouze Calc a nevím zda Excel to umí načíst. V Calcu to funguje a z mé zkušenosti předpokládám, že po nakopírování makra do Excelu to bude fungovat také. (V případě potřeby zde můžu dát funkční program v Calcu)
Function NajdiZ9Bodu(R, X#, Z#) As Variant
' R zadání pole dat 9 řádků a tři sloupce
' - první sloupec hodnoty X
' - druhý sloupec odpovídající hodnoty Y
' - třetí sloupec odpovídající hodnoty Z
' přičemž první 3 řádky je červená linka, další 3 řádky zelená linka a poslední 3 řádky červená linka
' X a Z jsou zadané hodnoty pro které hledáme hodnotu Y
'
' Lagrange interpolace 3 body (dvourozměrná a kvadratická, proloženo křivkou ve dvou osách)
Dim Yc#, Zc#, Yz#, Zz#, Ym#, Zm#, Y#
On Local Error GoTo Chyba

' Červená linka (Výpočet souřadnice Yc a odpovídající hodnota Zc):
Yc=(R(1,2)*(X-R(2,1))*(X-R(3,1)))/((R(1,1)-R(2,1))*(R(1,1)-R(3,1))) _
+(R(2,2)*(X-R(1,1))*(X-R(3,1)))/((R(2,1)-R(1,1))*(R(2,1)-R(3,1))) _
+(R(3,2)*(X-R(1,1))*(X-R(2,1)))/((R(3,1)-R(1,1))*(R(3,1)-R(2,1)))
Zc=(R(1,3)*(X-R(2,1))*(X-R(3,1)))/((R(1,1)-R(2,1))*(R(1,1)-R(3,1))) _
+(R(2,3)*(X-R(1,1))*(X-R(3,1)))/((R(2,1)-R(1,1))*(R(2,1)-R(3,1))) _
+(R(3,3)*(X-R(1,1))*(X-R(2,1)))/((R(3,1)-R(1,1))*(R(3,1)-R(2,1)))

' Zelená linka (Výpočet souřadnice Yz a odpovídající hodnota Zz):
Yz=(R(4,2)*(X-R(5,1))*(X-R(6,1)))/((R(4,1)-R(5,1))*(R(4,1)-R(6,1))) _
+(R(5,2)*(X-R(4,1))*(X-R(6,1)))/((R(5,1)-R(4,1))*(R(5,1)-R(6,1))) _
+(R(6,2)*(X-R(4,1))*(X-R(5,1)))/((R(6,1)-R(4,1))*(R(6,1)-R(5,1)))
Zz=(R(4,3)*(X-R(5,1))*(X-R(6,1)))/((R(4,1)-R(5,1))*(R(4,1)-R(6,1))) _
+(R(5,3)*(X-R(4,1))*(X-R(6,1)))/((R(5,1)-R(4,1))*(R(5,1)-R(6,1))) _
+(R(6,3)*(X-R(4,1))*(X-R(5,1)))/((R(6,1)-R(4,1))*(R(6,1)-R(5,1)))

' Modrá linka (Výpočet souřadnice Ym a odpovídající hodnota Zm):
Ym=(R(7,2)*(X-R(8,1))*(X-R(9,1)))/((R(7,1)-R(8,1))*(R(7,1)-R(9,1))) _
+(R(8,2)*(X-R(7,1))*(X-R(9,1)))/((R(8,1)-R(7,1))*(R(8,1)-R(9,1))) _
+(R(9,2)*(X-R(7,1))*(X-R(8,1)))/((R(9,1)-R(7,1))*(R(9,1)-R(8,1)))
Zm=(R(7,3)*(X-R(8,1))*(X-R(9,1)))/((R(7,1)-R(8,1))*(R(7,1)-R(9,1))) _
+(R(8,3)*(X-R(7,1))*(X-R(9,1)))/((R(8,1)-R(7,1))*(R(8,1)-R(9,1))) _
+(R(9,3)*(X-R(7,1))*(X-R(8,1)))/((R(9,1)-R(7,1))*(R(9,1)-R(8,1)))

' Nyní zjistíme hledaný bod Y z předcházejících výsledků:
Y=(Yz*(Z-Zc)*(Z-Zm))/((Zz-Zc)*(Zz-Zm)) _
+(Ym*(Z-Zc)*(Z-Zz))/((Zm-Zc)*(Zm-Zz)) _
+(Yc*(Z-Zm)*(Z-Zz))/((Zc-Zm)*(Zc-Zz))

' Výsledek:
NajdiZ9Bodu = Y
Exit Function
Chyba:
NajdiZ9Bodu = "?"
End Function


Strana:  1 2   další »

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