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

#1 Re: Calc » CALC Přestane přepočítávat některé vzorce » 1. 3. 2023 20:14:24

Naprosto nepochopitelně se mi přestal přepočítávat naprosto jednoduchý vzorec =A1 (prostě jsem chtěl mít ten sloupec na dvou místech, obešel bych se bez toho, ale je to přehlednější). Nahradil jsem to za =1*A1 a zatím to funguje. Jindy se mi nepřepočítávaly vzorce se SUMPRODUCT, to už je horší, ale to se mi v poslední době neděje, tak snad dobrý.

#2 Re: Calc » CALC Přestane přepočítávat některé vzorce » 13. 2. 2023 12:49:38

Stává se mi to, je to dost nepříjemné, bohužel řešení nemám.

#3 Re: Calc » Změna formátování textu na ...(třeba datum) - apostrof - VYŘEŠENO » 8. 2. 2023 20:04:22

Aha, mám teď LO 5.4 kvůli bezproblémovému běhu maker. Tak to bude tím.

#4 Re: Calc » Změna formátování textu na ...(třeba datum) - apostrof - VYŘEŠENO » 8. 2. 2023 07:53:05

to kabi: jj, s volbou "USA" to opravdu funguje jak pro apostrofy tak pro desetinné tečky - ale na to člověk fakt sám nepřijde. Díky.


A ještě tedy jeden dotaz: píšete, že je volba stejná jako při vkládání pomocí Ctrl-Shift-Alt-V. Tohle mi žádný příkaz nespouští, možná jste měl namysli Ctrl+Shift+V, což ale stejnou volbu neumožňuje, resp. nepodařilo se mi takto převést ani desetinné tečky ani apostrofy na standardní čísla. Nějaký návod?


Už tomu asi rozumím - jde zřejmě o import (vložení) neformátovaného textu, sice ta klávesová zkratka mi fakt nefunguje, spouštím to přes "roletku" pod tlačítkem "vložit" na toolbaru a tady je nabídka stejná to je jasné, je to vlastně stejná funkce. Takže ano, jsou minimálně dvě cesty jak se k této funkci dostat. Asi jste měl namysli toto.

#6 Re: Calc » Změna formátování textu na ...(třeba datum) - apostrof - VYŘEŠENO » 3. 2. 2023 16:13:25

to imcon: možná byste měl přečíst pár příspěvků v této dikuzi opravdu pořádně než učiníte takový definitivní závěr.

ludviktrnka napsal(a)

Pokud tam čárka vůbec není např.: '5 tak je potřeba použít regulární výraz např. vyhledat [:digit:] a nahradit za &

#7 Re: Calc » Změna formátování textu na ...(třeba datum) - apostrof - VYŘEŠENO » 3. 2. 2023 14:47:57

kabi napsal(a)

můžete také označit sloupec a použít volbu Data -> Text do sloupců. Při tomto převodu si můžete zvolit formát, který vám bude vyhovovat.

... zkouším to na desetiných číslech s tečkou místo čárky (poměrně typická potíž) a nějak mi to takto nejde a nejde mi to ani s textovými buňkami s obsahem desetinných a celých čísel s desetinou čárkou ale s neviditelným uvozujícím apostrofem. Tak nevím. Nějaký moc možnosti tam nejsou, volba detekovat speciální čísla je nepřístupná a stejně tak znaková sada. Ale možná je to mým starým LO.

EDIT: ale funguje to na datum, to je pravda.

#8 Re: Calc » Změna formátování textu na ...(třeba datum) - apostrof - VYŘEŠENO » 3. 2. 2023 08:32:47

já jsem teď měl čísla většinou celá nebo zakrouhlena na 0,5. Omylem jsem načetl data z csv se zaškrtnutým "pole v uvozovkách jako text", což není úplně dobré při importu čísel :-). Takže v buňce bylo to co říkáte - neviditelný apostrof a číslo třeba 5 nebo 128 nebo 2,5 apod. (zarovnáno vlevo). Označil jsem celý sloupec (asi 2000 řádků), dal jsem ctrl+H, do pole vyhledat napíšu čárku "," a do pole nahradit taky ",". No a výsledek je, že i číslo 5 i číslo 2,5 se přeformátují na číslo (zarovnáno vpravo). Hotovo. Vy jste se ale ptal původně na datum, to jsem nezkoušel.


EDIT: pardon, teď se koukám do zdroje a já tam měl vždy 5,0; 128,0 atd. takže čárka fungovala. Pokud tam čárka vůbec není např.: '5 tak je potřeba použít regulární výraz např. vyhledat [:digit:] a nahradit za &

#9 Re: Calc » Změna formátování textu na ...(třeba datum) - apostrof - VYŘEŠENO » 1. 2. 2023 17:14:47

to lp. děkuji, mockrát jsem to řešil přes Value, ale to nahrazení např. čárku za čárku fakt funguje a pro větší množství dat je to opravdu mnohem efektivnější. Super.

#10 Re: Calc » Přesun hodnot z několika sloupců pod jeden (VYŘEŠENO) » 1. 11. 2022 12:53:27

vzorec je: =INDEX($B$2:$H$1000;ROUND(ROW(I1)-ROUNDDOWN(ROW(I1)/(COUNTA($B$2:$B$1000)+0,1))*COUNTA($B$2:$B$1000));ROUNDUP(ROW(I1)/COUNTA($B$2:$B$1000))), roztáhnout ve sloupci.

#11 Re: Calc » Kopírování a vkládání pomocí makra (VYŘEŠENO) » 27. 8. 2022 17:52:48

pro import dat používám takovouhle dávku, třeba to pomůže:

Sub ImnportDat
	dim doc as object
	dim oList as object
		
 	doc = thisComponent
	oList = doc.Sheets.getByName("List1")
   	
   	file = PickFile()
   	
	dim secDoc as object, secList as object
   	dim argum(0) as new com.sun.star.beans.PropertyValue   	
   	argum(0).Name = "MacroExecutionMode"
	argum(0).Value = 4

	secDoc = starDeskTop.LoadComponentFromURL(file,,0,argum()) 
	secList = secDoc.Sheets(0)
	
	
	'kopie dat
	sloupec_copy = secList.GetCellRangeByPosition(0, 0, 0, 30).getDataArray
	oList.GetCellRangeByPosition(0, 0, 0, 30).setDataArray(sloupec_copy)
	
		
	'secDoc.store()
	secDoc.close(True) 'volitelně uzavření druhého souboru
	
	msgbox ("Překopírováno",0,"LO info")
		
End Sub

Function PickFile() as string
  Dim FilePicker As Object
  Dim FilePath() As String
  FilePicker=createUnoService("com.sun.star.ui.dialogs.FilePicker")
  FilePicker.execute
  FilePath()=FilePicker.GetFiles
  PickFile = FilePath(0)
End Function

pokud má být soubor otevřen jen skrytě stačí doplnit hodnotu hidden = true:

  dim secDoc as object, secList as object
  dim argum(1) as new com.sun.star.beans.PropertyValue
  argum(0).Name = "Hidden"
  argum(0).Value = True
  argum(1).Name = "MacroExecutionMode"
  argum(1).Value = 4

#12 Re: Calc » Vícenásobné splnění podmínky » 22. 7. 2022 08:31:25

Tohle je jednoznačně úloha pro kontingenční tabulku. Data je potřeba mít v jedné tabulce, pak už je to celkem jednoduché. Datumy mohou být libovolně přeházené, kontingenční tabulka to pěkně srovná a řádky se stejnými daty umístí pod sebou. Řešení výkazů nebo výpisů dat pomocí vzorců je obtížné a někdy až nemožné.

#13 Re: Calc » Skládání logických funkcí u filtru » 11. 7. 2022 07:44:44

lp. napsal(a)

Tip jen z hlavy, tohle jsem zatím nezkoušel.

výdaj1 <> 0 NEBO výdaj2 <> 0 AND ID = zadané číslo


Tohle  nefunguje, to už jsem zkoušel. Neddokážu přesně říct systém vyhodnocení, každopádně výsledky jsou nekorektní.


lp. napsal(a)

nebo "roznásobení":

výdaj1 <> 0 AND ID = zadané číslo NEBO výdaj2 <> 0 AND ID = zadané číslo


Tohle vypadá dobře. Ale po vyzkoušení to nefunguje. Vypadá to ještě na jedno omezení fitru KT a sice max tři ktritéria, takže i kdyby toto řešení bylo logický správné, tak KT jej nedokáže aplikovat.


Téma uzavírám, děkuji LP a Neutr.

#14 Re: Calc » Skládání logických funkcí u filtru » 10. 7. 2022 11:19:02

problém je že zadání filtru v KT žádné závorky nemá. To je smysl dotazu. Jak nastavit pořadí priorit (jakoby modelovat závorku), když mohu jen řadit za sebe kritéria a vždy následující je spojeno s předchozím pomocí logické funkce (AND, OR).


Výdaj1 i výdaj2 jsou vždy buď rovné nula nebo kladné, tzn. Výdaj1+výdaj2=0 nastane pouze tehdy pokud jsou obě hodnoty nulové. S tím problém není. Problém je, že pro tuhle operaci musím zřejmě zřídit pomocný sloupec, čemuž jsem se chtěl vyhnout.

#15 Re: Calc » Skládání logických funkcí u filtru » 8. 7. 2022 17:40:18

... tak si to zkouším ručně. Jde to tak, že do filtru zadám výdaj1 <> 0 NEBO výdaj2 <> 0 a ručně pak "vyfitruji" ID pomocí šipečky v hlavičce kontingenční tabulky. Funguje to, ale myslím že makrem toto asi nepůjde ...

#16 Re: Calc » Skládání logických funkcí u filtru » 8. 7. 2022 16:56:03

To neutr: bohužel jsem to asi vysvětlil špatně. Jde o filtr v kontingenční tabulce, tedy nikoli vzorce a ani nechci pokud možno zasahovat do mateční databáze. Jednotlivá kritéria filtru v KT se skládají pomocí logického AND nebo OR. Já potřebuji aby výsledkem byly všechny řádky které splňují:


výdaj1 <> 0 NEBO výdaj2 <> 0 (musí platit alespoň jedna z podmínek)


a současně ID = zadané číslo (musí platit vždy)


Tedy mám tři kritéria z nichž dvě jsou spojeny logickým OR a výsledek je se třetím kritériem spojen logickým AND.


Pokud dám všude OR tak budou výsledekm i řádky kde ID = číslo, ale výdaj1 = 0 a také výdaj2 = 0 a také všechny řádky kde výdaj1 nebo výdaj2 jsou nenulové ale ID <> zadané číslo. To je nežádoucí výsledek.


Zadání
ID / výdaj1 / výdaj2
2 / 0 / 0
3 / 1 / 0
2 / 0 / 1
2 / 1 / 1
3 / 1 / 1
2 / 1 / 0


zadám ID = 2 a výsledek musí být (bez požadavku na pořadí):
ID / výdaj1 / výdaj2
2 / 0 / 1
2 / 1 / 1
2 / 1 / 0


Já si v podstatě myslím, že to nejde, spíš se ptám jestli na to není nějaký fígl, který neznám.

#17 Calc » Skládání logických funkcí u filtru » 7. 7. 2022 11:44:38

ludviktrnka
Odpovědí: 8

Dobrý den všem. Mám problém se správným poskládáním podmínek fitru. Možná to ani nejde, ale pokusím se nastínit problém a předem děkuji za případné nasměrování.


Potřeboval bych vyfiltrovat tabulku podle tří kritérií resp. podle tří sloupců. První sloupec je ID a musí platit pro všechny řádky. Druhý sloupce je Výdaj1 a třetí sloupec Výdaj2. Potřebuji nastavit filtr tak aby se zobrazily všechny řádky kde je nenulová alespoň jedna z hodnot Výdaj1 nebo Výdaj2


Tedy ID=číslo AND (Výdaj1 <> 0 OR Výdaj2 <> 0). Právě nevím jak nastavit tu závorku, tedy vkastně pořadí vyhodnocení. Samozřejmě to lze snadno vyřešit pomocným sloupcem Výdaj3 = (Výdaj1 + Výdaj2) <> 0, ale rád bych se tomu vyhnul, pokud to jen trochu půjde. Zkusil jsem různé pořadí, ale nedaří se.


Jo a jde o filtr kontingenční tabulky, filtruji pomocí makra, ale to asi na logice věci nic nemění.


EDIT: Ještě doplňuji, má to fungovat tak že pokud výdaj1+výdaj2 = 0 tak se řádek nezobrazí.

#18 Re: Calc » Makro export listu do XLSX (VYŘEŠENO) » 11. 4. 2022 10:52:38

možná by pomohlo povolit makra v novém souboru:
dim argum(0) as new com.sun.star.beans.PropertyValue
argum(0).Name = "MacroExecutionMode"
argum(0).Value = 4
secondDoc = StarDesktop.loadComponentFromUrl("private:factory/scalc","_blank",0,argum())

#19 Re: Calc » Hledání a kopírování celého řádku » 8. 4. 2022 16:02:20

Řekl bych že to je úloha pro standardní případně pokročilý filtr (https://help.libreoffice.org/Calc/Applying_Filters/cs). Lze zvolit vykopírování filtrovaných hodnot. (Akorát pozor, kopírují se celé buňky tedy i vzorce, takže případné relativní odkazy nemusí fungovat správně. V případě, že je potřeba vykopírovat výsledky vzorců, pak je potřeba zvolit běžný fitr (bez vykopírování), označit výsledek a na cílové místo "vložit jako hodnoty"

#20 Re: Calc » kontingenční tabulky - nepočítá mi to? » 29. 3. 2022 12:48:25

zkuste místo "součet" nastavit "počet". Dvojklik na položku v oblasti Datová pole.

#21 Re: Calc » Text do " Vyřešeno" » 5. 3. 2022 23:59:55

Zkuste se podívat na základní výuku Basicu - https://www.openoffice.cz/doplnky/mala- … office-org . Pravděpodobně tam najdete odpovědi na všechny otázky.
Jinak vypsání do sloupce A např. takto:

sub test
   dim s1()
   s1 = SpaceSplit("Jean Paul  Belmondo")
'řetězec může mít libovolný počet slov odělený libovolným počtem mezer, 
'výsledek budou vždy jednotlivá slova v proměnné s1()
   
   dim doc as object
   dim oSheet as object
   
   doc = ThisComponent
   oSheet = doc.sheets(0)
   
   for i = 0 to ubound(s1)
   	oSheet.getCellByPosition(0, i + 1).String = s1(i)
        'doplnění slov do sloupce 0 tj. A, od řádku 1 tj. 2, tzn. 1. slovo do A2, dále A3 ...
   next i   
end sub

#22 Re: Calc » Text do " Vyřešeno" » 5. 3. 2022 12:05:00

mě připadne že v tom fóru je to pěkně popsané, co přesně máte za problém? Zjištění počtu prvků matice se provádí příkaze lbound() a ubound(), tím eleiminujete případné "přetečení" pole.

sub test
   dim s1()
   s1 = SpaceSplit("ab      cd   ef       jkl")'řetězec může mít libovolný počet slov odělený libovolným počtem mezer, výsledek budou vždy jednotlivá slova v proměnné s1()
   for i = 0 to ubound(s1)
   	print s1(i)
   next i   
end sub


Function SpaceSplit(p1 as String) as Array
  Dim i as Integer, j as Integer, a1()
  a1=Split(Trim(p1)," ")
  Dim a2(Ubound(a1))
  For i = 0 to Ubound(a1)
    If a1(i)<>"" Then
       a2(j)=a1(i)
       j = j+1
    End If
  Next
  Redim Preserve a2(j-1)
  SpaceSplit = a2
End Function

#23 Re: Calc » Text do " Vyřešeno" » 3. 3. 2022 07:27:08

Řeší se to pomocí funkce Split, různá řešení jsou již zde: https://forum.openoffice.org/en/forum/v … =9&t=33218.
Jednotlivá slova dostanete do matice a můžete je vložit kam potřebujete

#24 Re: Calc » Filtr pomocí makra VYŘEŠENO » 13. 2. 2022 15:04:30

nebo pomocný sloupec =value(A1), poté sloupec vložit jinak zpět na originální pozici jako hodnoty. S hledáním apostrofu je trochu potíž.

#25 Re: Calc » Jak zkonvertovat ceník s cenami v řádcích do sloupců? - VYŘEŠENO » 13. 2. 2022 10:57:43

Pomocí vzorců to lze, ale nakonec té práce buda taky dost, a vzorců bude 150 000 řádků, takže pravděpodobně to bude padat. Takže podle mne je jediná rozumná cesta řešení pomocí jednoduchého makra. Nevím zda s tím mátě nějaké zkušenosti. Není problém to napsat, ale musíte jej pak umět aplikovat, spouštět atd.

Zápatí

Používáme FluxBB