Fórum pro uživatele kancelářského balíku OpenOffice | LibreOffice
 

#1 22. 12. 2017 19:32:53

Forrest
Člen
Registrace: 22. 12. 2017
Příspěvků: 7

Generování dat - VYŘEŠENO

Dobrý den,

mám v calcu v bunce E12 číslo 450 a potřebuji, aby se v bunkých A4, A5, A6... objevili postupně čísla 1,2,3...

Velikost sloupec čísel vygenerovaných v bunkách Ax potom chci definovat právě bunkou E12.
Jde to vůbec udělat? Všude jen čtu články že data se musí vkládat externě bud ze souboru nebo jinou cestou.

Děkuji

Editoval Forrest (23. 12. 2017 11:08:58)

Offline

#2 22. 12. 2017 20:57:54

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 3,435

Re: Generování dat - VYŘEŠENO

Není zřejmé co to má popisovat, ale je to zřejmě popis principu kdy buňka E12 vyjadřuje buď součet čísel ve sloupci A4:Ax, nebo spíš počet čísel ve sloupci A4:Ax.
     Pokud jde o součet čísel, bude v buňce E12 vzorec :

=SUM(A4:Ax)

     nebo počet čísel :

=COUNT(A4:Ax)

     Pokud by to mělo být opačně, vytvořit sloupec podle předem dané hodnoty v buňce E12, je to celkem složitější, protože interval od A4 se musí řešit jako posloupnost. Pokud se začíná od jedničky a posloupnost roste po jedné pak by platilo přibližně pravidlo 450/2 = střední hodnota.     


     Například pro číslo 7 je střední hodnota "4" - a 7x4 = 28 - otestujte si to.
Pro sudá čísla se musí použít trik př. (8-1)+8 = [7x4 = 28] + [1x8] = 36. - Je logické že součet sedmičky se zvětší o osmičku. Takže lichá čísla jdou přímo (jako sedmička) a sudá nepřímo (jako osmička).


     Ovšem správný postup je dán z dvojic. To je dáno řadou dvojic z celku x :
x = 2 = 1 dvojice
x = 3 = 3 dvojice
x = 4 = 6 dvojic
x = 5 = 10 dvojic
.....
x = 30 = 435 dvojic
x = 31 = 465 dvojic


     To si můžete ověřit snadno. Zapište do A1 číslo 1, do A2 dejte vzorec =A1+1 a to zkopírujte až do buňky A30. Pod to dejte součet a dostanete číslo 435.
     Ovšem posloupnosti nemusí začínat jedničkou a nemusí přibývat jedničkou. Také je jasné že se musí řešit maličko odlišně například start od čísla 15 místo od jedničky. Ale i to se dá zabudovat stejně jako jiný přírůstek řady (inkrement).


     Obecná hodnota může reprezentovat obecnou posloupnost a to už je otázka teorie čísel, nebo numerických analýz protože to může být nějaká složitější funkce. Proto myslím že takový postup na mysli nemáte.

Editoval neutr (22. 12. 2017 21:16:15)


Moje e-mailová adresa
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte orientaci při vyhledávání řešení JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#3 22. 12. 2017 21:42:03

Forrest
Člen
Registrace: 22. 12. 2017
Příspěvků: 7

Re: Generování dat - VYŘEŠENO

Je to jednoduché. V bunce F12 mám nějaké číslo které se mění v závislosti na výpočtech.
Číslo může nabývat pouze celých čísel v rozsahu 1-60 000.

No a zadáním je vygenerovat posloupnost čísel od 1 s inkrementem po 1 a začínají na bunce A4.
Tedy A4 = 1, A5 = 2 atd....

Uložil jsem můj dokument sem
https://ulozto.cz/!UNa9RC5jhFsn/vypocty-ods

Je to tam pro ilustraci vyplněné. Hodnota v F12 je 450 tedy posloupnost má 450 hodnot.
Ale nyní mám posloupnost pouze ručně roztaženou myší a já potřebuji, aby se generovala v závislosti na F12.

Offline

#4 23. 12. 2017 09:08:26

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 3,435

Re: Generování dat - VYŘEŠENO

Výpočty - úprava
     Tak řešení je sice celkem jednoduché, ale 60 tisíc vzorců to řádně zpomaluje. Když by to byla jen pouhá čísla bylo by to mnohokrát rychlejší. Takže snad to tak vyhovuje - nastavení zřejmě pro nějaký přesný stroj - frézku, soustruh nebo aktuátor. Ale pro řízení v reálném čase to by nestačilo ani náhodou.


     Takže jsem přidal ještě vzorec který vůbec nepotřebuje nic jiného nežli výchozí hodnotu "n" - tedy těch Vámi ukázaných 450. Má to ale jeden háček - součin který se vyhodnocuje musí být celé číslo - nesmí mít desetinu.
     Vzorce ve sloupci si s tím poradí dobře, ale fakticky to zaokrouhlí nahoru. Nová hodnota se zapíše jen pokud je součet polořek před tím menší nežli číslo v buňce F12. Takže mapříklad když tam bude 252,5 tak předposlední vzorec dá hodnotu a poslední také protože 250 < 250,5.
     Jeden součtový vzorec vyhodí nesmysl, ale je to možné udělat tak, že si sám zaokrohlí nahoru nebo dolu a pak vyplivne správný výsledek.


     Pokud by to mělo být nasazeno v reálném provozu - inline - jako například kopírování, nebo řízení pohybu vřetene, nebo aktuátoru sp. - pak by to muselo být makrem aby to bylo co nejrychleji.


Moje e-mailová adresa
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte orientaci při vyhledávání řešení JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#5 23. 12. 2017 11:07:59

Forrest
Člen
Registrace: 22. 12. 2017
Příspěvků: 7

Re: Generování dat - VYŘEŠENO

Děkuji mnohokrat za váš čas. U mě ani po 7minutách nebylo přepočítáno :-)
Ale to nevadí od práce mě to nezastaví. Calc na tohle asi nebude nejvhodnější nástroj.
Bud to v tom jen výpočty nasimuluji na nějaký předem daný pošet kroků nebo se pokusim naučit s matlabem. Každopádně značim jako vyřešeno a ještě jednou děkuji.

Offline

#6 23. 12. 2017 11:17:46

kabi
Člen
Registrace: 1. 6. 2017
Příspěvků: 167

Re: Generování dat - VYŘEŠENO

Zkuste do sloupce A zapsat tento vzorec, bude to mnohem rychlejší =IF(ROW()-3<=$F$12;ROW()-3;"")

Offline

#7 23. 12. 2017 13:00:51

Forrest
Člen
Registrace: 22. 12. 2017
Příspěvků: 7

Re: Generování dat - VYŘEŠENO

Asi to dělám špatně, ale výsledek žádný. Jakmile něco změním calc se totálně zasekne.

Offline

#8 23. 12. 2017 13:15:11

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 3,435

Re: Generování dat - VYŘEŠENO

Nevím jestli Vám stačí výsledek - ten se tam objeví ihned. To byste ale zřejmě uvedl. Mimo toho je možné místo vzorců spustit makro ktetré udělá jen přesný počet řádků ve formátu čísla. Vzorce jsou "těžké" vždy a 60 tisíc které tam musí být je na hranici.
      Je mi jasné že se používá starší stroj, který se užívá jen k řízení udělátka, ale právě proto bych to řešil jinak. Pokud to musí být řada tak i 60 tisíc čísel (nikoliv vzorců) může být problém. Pokud ne - udělám makro které to vygeneruje.


      U makra jde o to, zda se spouští automaticky při změně buňky, nebo na manuální impulz (simulovaný třeba impulzem na myš nebo klávesnici). Když to popíšete - udělám to, ale jestli to má zadávat pohyby os tak to potřebujete nejspíš pro HPGL, nebo f-engrave a podobně. I to se dá řešit.
      Takže popište přesně jak a co by bylo potřeba. Jen tak mimochodem Matlab není zadarmo i když je na linuxu a dá se myslím používat v demu. Už jsem se dlouho nedíval. Hodně lidí užívá Eagle (i pro 3. osu) ale to je zdarma jen pro malé desky. Vy nespíš potřebujete přepis manuálních posuvů do protokolu který pak poběží jako kopírka. Tohle mají myslím jen opravdu drahé programy.


Moje e-mailová adresa
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte orientaci při vyhledávání řešení JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#9 23. 12. 2017 13:20:01

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 3,435

Re: Generování dat - VYŘEŠENO

Forrest napsal(a)

Asi to dělám špatně, ale výsledek žádný. Jakmile něco změním calc se totálně zasekne.

     Máte zřejmě slabý stroj, nebo tam máte spuštěno plno procesů a pamět je zanesená nepotřebnými procesy. Pokud jste na Windows otestujte program Wise Care 365 - umí to na chvíli uvolnit.
     Spíš ale popište jak se to má spouštět a bude to uděláno "meteleskuBlesku" :-)


Moje e-mailová adresa
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte orientaci při vyhledávání řešení JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#10 23. 12. 2017 14:09:11

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 3,435

Re: Generování dat - VYŘEŠENO

2. verze výpočtu
     Nyní se to dělá makrem. Makro je závislé na události listu LIST > UDÁLOSTI LISTU. Je zde navolen dvojitý klik kdekoliv v sešitě. Je to možné změnit například na změnu hodnot a podobně. To si musíte otestovat. Možností je více.

Editoval neutr (23. 12. 2017 14:09:35)


Moje e-mailová adresa
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte orientaci při vyhledávání řešení JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#11 23. 12. 2017 14:12:21

kabi
Člen
Registrace: 1. 6. 2017
Příspěvků: 167

Re: Generování dat - VYŘEŠENO

Pro tu změnu vzorce je potřeba vypnout automatický výpočet, jinak se tabulka stále přepočítává a calc tuhne. Upravil jsem soubor od neutr https://ulozto.cz/!V6xkfX7LuRG2/vypocty-uprava-ods

Offline

#12 23. 12. 2017 14:42:08

Forrest
Člen
Registrace: 22. 12. 2017
Příspěvků: 7

Re: Generování dat - VYŘEŠENO

Nakonec jsem také došek k názoru, že nejlepší na toto bude makro.
Tedy jsem si pročetl letmo nějaké články zde na serveru (skvele popsáné, jen bych přidal nějaké soubory s příklady na stažení) a napsal jsem si svoje vlastní makro.

Sub makro

doc = thisComponent
list = doc.sheets(0)

dim i as integer
dim konec as integer

konec = list.getCellRangeByName("F12").value

for i = 0 to konec-1
bunka = thisComponent.sheets(0).GetCellByPosition(0,i + 3)
bunka.value = i + 1
next i

End Sub


Asi to není moc správně napsané, ale funguje mi to. Ted jdu ještě prostudovat volbu  LIST > UDÁLOSTI LISTU abych nemusel makro spouštět ručně a bylo to navázané třeba na nějaký ENTER či kliknutí myši.

Je skvelé, že to tady tak dobře funguje. Děkuji mnohokrát.

Offline

#13 23. 12. 2017 15:16:43

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 3,435

Re: Generování dat - VYŘEŠENO

To makro je celkem pomalé. Ale možná Vám to postačuje. Události listů jsou někdy nepříjemné. Zejména když jsou zapnuty iterace pro přepočet vzorců. To co jsem poslal jako makro je rychlé.
     Váš problém bude v tom, že nejprve musíte odstaranit staré záznamy, které mohou být větší nežli nové. Já to řešil nahraným makrem ale lze napsat jedno makro které udělá array s prázdnými buňkami, respektive místo čísla "" (dvojité uvozovky) a vždy ho pustit na celý rozsah.
     Spouštění makra můžete udělat i jinak nežli na události listu. Dá se navolit klávesová zkratka - nejlépe F3 - NÁSTROJE > PŘIZPŮSOBIT > KARTA KLÁVESNICE. Najdete si dole svoje makro vyberete klávesu F3 a zadáte ZMĚNIT. Následně odklikat a uložit.

Editoval neutr (23. 12. 2017 15:18:05)


Moje e-mailová adresa
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte orientaci při vyhledávání řešení JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#14 23. 12. 2017 15:58:44

Forrest
Člen
Registrace: 22. 12. 2017
Příspěvků: 7

Re: Generování dat - VYŘEŠENO

To neutr:

Ano máte pravdu je nejprve potreba smazat staré záznamy.
Udělal bych to jak píšete tedy v makru opet napsat cyklus který vkládá ""
Ale nevím jak definovat "Celý rozsah". Nejspiš tam dám nějaké velké číslo a bude klid.

Ještě bych měl dotaz ke slučování stringů v makrech.
Respektive potřebuji napsat toto a nezmám syntaxi

sloupecB.formula = "=F13*A(i + 3)"

Výsledek má být že se do bunky B4 vloží vzorec =F13*A4 a obdobně do dalších bunek  B5 = F13*A5 atd...
Ale nevim jak to zapsat aby to makro bylo spravne.

Když už budu mít takto vygenerovaná data, zle z toho také nějak jednoduše generovat grafy, aby i graf
se přepočítával v závislosti na tom kolik zdrojových dat mi moje vzorečky zrovna vygenerují?

Offline

#15 23. 12. 2017 16:15:14

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 3,435

Re: Generování dat - VYŘEŠENO

Ano lze to udělat. Grafy mají zdrojovou tabulku a když jí přepíšete čísla - změní se i graf. To s těmi vzorci psanými makrem není problém. V tom Vašem případě je chyba v tom že není oddělena aktivní proměnná od textu vzorce :

= "=F13*A(" & i + 3 & ")" 

     Udělám Vám rychlé makro na celý rozsah - napíše hodnoty a zbytek smaže. Malý moment. Musím to otestovat i když bych to napsal z hlavy.

Editoval neutr (23. 12. 2017 16:16:03)


Moje e-mailová adresa
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte orientaci při vyhledávání řešení JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#16 23. 12. 2017 16:28:13

Forrest
Člen
Registrace: 22. 12. 2017
Příspěvků: 7

Re: Generování dat - VYŘEŠENO

Zkusil jsem toto a také to zabralo

sloupecB.formula = "=F13*A"+(i + 4)

Myslim, že je to z JavaScriptu nebo php.

PS: proč sem píšete a pomáháte lidem? OpenOffice je zdarma tedy určitě za to nejste placen,
a myslim si, že za takovýto support by se ani u komerčních firem stydět nemuseli.
Navíc jsou vánoce a je málo lidí, kteří pracují i o svátcích.

Offline

#17 23. 12. 2017 17:08:51

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 3,435

Re: Generování dat - VYŘEŠENO

Sub Zapis
Sheets = ThisComponent.getSheets()
oSheet = thisComponent.Sheets(0)
Dim RangeToClear
Dim iVal as long
iVal = oSheet.getCellRangeByName("F12").Value - 1
Dim myArray(iVal,0)
RangeToClear = oSheet.getCellRangeByPosition(0,3,0,60000)
RangeToClear.clearContents(1)
For i = 0 To iVal
myArray(i,0) = i+1
Next i
oSheet.getCellRangeByPosition(0,3,0,3 +iVal).setDataArray myArray()
End Sub

     Tak snad to bude ono. Jen bych měl jít dnes na pivo takže asi později nebudu u aparátu. Už jsem několikrát nešel a před Vánoci se to nesluší i když jsem na tom mizerně po zdravotní stránce. Takže když bych se neozýval jsem pryč. Zítra jedu k dceři takže asi tak do pondělí nebudu fungovat - můžu tam na comp, ale není tam OpenOffice :-(


Příjemné svátky


Moje e-mailová adresa
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte orientaci při vyhledávání řešení JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#18 23. 12. 2017 17:24:15

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 3,435

Re: Generování dat - VYŘEŠENO

Ještě musím připsat. Nezapomeňte vypnout makra která jsou pod událostmi listu, nebo je smažte a nechte tam jen tohle jediné. Udělalo mi to binec - 15 minut jsem hledal chybu a bylo to jiné makro pod událostí listu.
     Děkuju za pochvalu. Ne všichni sdílejí tento názor. Už jsem pár lidí setřel i když to možná byl jeden a ten samý pod jinými nicky. Já jsem v důchodu a dělám svoje projekty. A tak rád odbočím abych si vyčistil hlavu.


     Za peníze nedělám ale mám komerční ambice. Stavím věci které nemají jinou alternativu. Mým hlavním koníčkem je kombinatorika - dělám to už víc jak 40 let. Naučil jsem se programovat a dělám sice hlavně be Star Basic, ale nyní často v JavaSriptu kde chystám specializované knihovny jako jsou generátory Kombinací, Variací, Faktoriál (tj vlastně variace bez opakování) a Partition Numerorum.
     Od ledna bych měl dělat nějaký projekt pro UJEP ale zatím jen studii - měla by to být aplikace pro sestřičky. Krmit to budou 3 ročníky holek takže i když v důchodu - času mám míň nežli kdykoliv před tím. Nyní dokončují analýzu pro loterii Euromiliony - statistiky s predikcí a ten zadavatel by toho chtěl mnohem víc. To se mi ale nechce.

Ať se daří Petr

Editoval neutr (23. 12. 2017 17:27:24)


Moje e-mailová adresa
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte orientaci při vyhledávání řešení JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

Zápatí