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

#2 Re: Calc » Jak vypsat hodnoty z oblasti VYŘEŠENO » 21. 4. 2015 20:55:27

Čísla alergenů jsou uloženy v seznamu potravin ve čtyřech sloupcích(nebývá více než 4 alergeny u jedné suroviny) s dalšími parametry k dané potravině. Do kalkulačního listu jsou vypsány funkcí vlookup též do čtyřech pomocných sloupců. První potravina obsahuje kupř. alergeny 1,7,11 druhá žádné,třetí alergen 8 a další znovu 7 atd. Každý z alergenů se ovšem v celkovém výpisu alergenů objeví jen jednou(1,7,8,11) Mám teď funkční řešení,takže jsem se ptal pro zajímavost a taky pro případ,že budu mít podobnou úlohu s větším rozsahem.

#3 Re: Calc » Jak vypsat hodnoty z oblasti VYŘEŠENO » 21. 4. 2015 15:04:03

Jde o kalkulační list pro výrobu pokrmů a tímto bych vypisoval alergeny,kterých je právě 13. U některých surovin je alergenů více,u jiných nejsou vůbec. Zůstanu tedy u countif. Zatím děkuji.
EDIT: Takže jsem to udělal podle původní verze,tzn. Ve sloupci R mám 13 pomocných buněk kde je vzorec =IF(COUNTIF($N$6:$Q$22;1)>0;1&",";"") a v buňce kam se to má vypsat je =(R6&R7&R8&R9&R10&R11&R12&R13&R14&R15&R16&R17&R18&R19) Funguje to,ale Kdyby bylo alergenů např.200 by to znamenalo 200 pomocných buněk kdy vzorec nejde rozkopírovat a je nutno každou buňku ručně editovat a vypsat (R6&...R206) si taky nechci představovat. Proto mne zajímalo jiné řešení. Jak tedy na to?

#4 Calc » Jak vypsat hodnoty z oblasti VYŘEŠENO » 20. 4. 2015 20:13:54

rejze
Odpovědí: 8

Zdravím. Jde o vypsání hodnot obsažených v pomocných sloupcích. Jde o hodnoty v rozsahu 1-13 vytažené funkcí vlookup z databáze k druhům surovin. Stejné číslo se může objevit u více surovin,ale potřebuji vypsat jen jednou každé číslo,které je v dané oblasti obsaženo. Napadlo mne testovat countif a i to funguje,ale musí být jednodušší cesta,protože testovat větší rozsah hodnot by takhle nešlo. Poradí někdo jak na to prosím?

#5 Re: Calc » Filtrace sčítaných položek » 26. 7. 2014 17:54:41

Ok zkusim dát true,nejspiš i udělám to makro zvlášť pro možnost volat ho i odjinud. Nicméně to umístění jsem zvolil dobře. Takhle by mi to zakázalo přepočítávat ovládací panel a sešit statistiky,který z toho panelu otvírám tlačítkem by to neovlivnilo. Ještě si s tim pohraju. Dík za nasměrování.

#6 Re: Calc » Filtrace sčítaných položek » 26. 7. 2014 08:47:51

Zdravim. Zkoušel jsem podle p."Ip" vložit do makra ten kus kódu který zakazuje přepočítávat,ale nic se nezmění.Otázka tedy je jestli jsem to použil správně,nebo jestli ten problém způsobují samotné vzorce nezávisle na aktualizaci linků. Celý kus kódu do kterého jsem to dával.

Sub Statistiky 'otevřít statistiky

dim document as object, dokument as object, list as object
dim bunka_slozka as object, bunka_soubor as object
dim Nastav_Prepocet as boolean
passw
    if Cerbpas=Cerbpasin then
    'panfce="faktura"
    'endif
    'if panfce="faktura" then
'passw
'passctrl  
document= ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dokument=stardesktop.currentcomponent
list=dokument.sheets(0)
bunka_slozka=list.GetCellByPosition(8,35)'I36
Dcesta=trim(bunka_slozka.string)
bunka_soubor=list.GetCellByPosition(9,2)'J3
Dsoubor=trim(bunka_soubor.string)
ovladani.otevri (""+Dcesta+""+Dsoubor+"")
Nastav_Prepocet = thisComponent.IsAutomaticCalculationEnabled
thisComponent.enableAutomaticCalculation(False)
ovladani.LinkAktu (Dcesta+"databáze/kontakty.ods","odběratelé","odběratelé")
ovladani.LinkAktu (Dcesta+"databáze/zboží.ods","zboží","data")
ovladani.LinkAktu (Dcesta+"databáze/faktury.ods","data","data")
'wait 2000
thisComponent.enableAutomaticCalculation(Nastav_Prepocet)
ovladani.vyberlb ("data","B2")
goto konec
end if
msgbox("Zadejte heslo pro "+Fakt,0,"CHYBNÉ PŘIHLÁŠENÍ")
konec:
End Sub

#7 Re: Calc » Filtrace sčítaných položek » 22. 7. 2014 07:52:29

Zdravim. Zatím jsem zkusil pouze možnost p."ludviktrnka" Je to SUMPRODUCT bez matice a je pomalejší než původní SUM s maticí. Nicméně ukázalo mi to,že tudy cesta nevede. Budu se jak psal p."neutr" muset vyhnout aktualizaci a současnému přepočítávání. Aktualizaci provádím makrem Linkaktu,které je řešeno zde

http://forum.openoffice.cz/viewtopic.php?id=3669

Jiným způsobem mi aktualizace linků nefungovaly pokud jsem otvíral sešity makrem. Pochopitelně v sešitě se statistikou prodejů se sbíhají tři cesty a tudíž je makro voláno třikrát. Nejschůdnější se mi tedy jeví zakázání přepočtu během aktualizace.

#8 Re: Calc » Filtrace sčítaných položek » 17. 7. 2014 23:11:47

Dik za namety. Ted jsem pres leto u PC pomerne vzacne,takze az k tomu vlezu vyzkousim co pujde. Kazdopadne kontingencni tabulka na to nesla sestavit. Tu jsem zkousel jako prvni. Problem je ten,ze potrebuju udelat soucet vsech druhu zbozi za dane obdobi,ale data si to bere ze seznamu faktur kde je pod polozkou kupr. zbozi1 pokazde neco jineho,protoze kazda faktura je jina. Proto si to scitam funkci SUMIF a dalsi co pak potrebuju,aby to secetlo prave jen z faktur za dane obdobi. Na to jsem KT proste nedokazal vymyslet.
EDIT: Jen pro informaci. Není to účetní program. Jen tabulky pro fakturaci a s odpočtem skladu a to co řeším teď jsou informativní statistiky prodeje jednotlivých druhů zboží za dané období. Oficiální účetní software dostává data na základě tištěných faktur a tam se případná chyba nepromítne. Každopádně dík za upozornění. Zrovna u toho sedím a testuji Vaše náměty.

#9 Re: Calc » Filtrace sčítaných položek » 8. 7. 2014 14:21:42

To by snad taky šlo. Jen je otázka jak se zachová makrem vložený vzorec v celé oblasti. Když ho napíšu do levé horní buňky a pak rozkopíruju,počítám s tim,že nedolarovaný buňky se mi o sloupec či řádek upraví. Stane se to i když to udělám makrem? Zkusím i návrh p."ludviktrnka" Dám vědět co to udělalo. Zatim děkuju.

#10 Re: Calc » Filtrace sčítaných položek » 8. 7. 2014 13:22:42

Maticový vzorec jsem právě použil a funguje,ale jak jsem psal je to asi moc náročný když se při otvírání aktualizují makrem linky a k tomu se propočítává matice. Okno dokonce chvíli neodpovídá a i když to funguje je to nepříjemný. SUMIFS zkusím to by mohlo být ono.

#11 Calc » Filtrace sčítaných položek » 8. 7. 2014 08:54:39

rejze
Odpovědí: 17

Zdravím. Řeším výpis prodeje druhů zboží kde je v tabulce kompletní seznam zboží a u něho se sčítá počet kusů. Data si to bere z jiného listu,kde je seznam faktur v řádcích. Každý řádek obsahuje komplet informace o dané faktuře. Pokud bych nechal kompletní součet ze všech faktur,stačí mi na to funkce SUMIF ,která sečte ze sloupce s počty kusů jen to s odpovídajícím názvem.Těch sloupců s počty kusů je 40 jako řádků na faktuře. Když chci ale filtrovat ještě podle data vystavení,funkce SUMIF už mi na to nestačí,nebo nevím jak to napsat,aby sčítala podle dvou oblastí a dvou kritérií.Vzorec pouze podle názvu zboží =SUMIF(data.O$2:O$500;$A5;data.P$2:P$500)To je rozkopírováno v oblasti a nakonci se jednotlivé řádky sečtou ke každému zboží. Nakonec jsem použil maticový vzorec =SUM((data.$G$2:$G$500>=$FV$1)*(data.$G$2:$G$500<=$FV$2)*(data.O$2:O$500=$A1)*data.P$2:P$500),který dělá přesně to co potřebuju,ale tabulka se dlouho načítá,protože ji volám makrem,které mi aktualizuje odkazy na externí data. Pokud někoho napadá řešení,které tolik nezatěžuje jako matice budu vděčen.
Díky.

#12 Re: Calc » Jak neukládat tlačítko v calcu » 11. 6. 2014 16:39:31

To by melo zajistit (ByVal adresa as string) adresa je promenna obsahující adresu (cestu) kterou předáte při volání toho makra od "neutr". Pardon odpovídal jsem na neaktualizovanou stránku. Jinak na ukládání bez otevírání,se v nejbližší době vrhnu abych se ho naučil používat. To problikávání sešitů je protivný a pomalý. Jistě se p. "neutr" budu muset na pár věcí vyptat a nebo poprosit o kus kódu,který to používá k rozpitvání. To je obvykle nejlepší na pochopení.

#13 Re: Calc » Makrem uložit dokument - Vyřešeno » 6. 6. 2014 07:25:16

Zdravím. Nahoře je ten kód doplněný o to co potřebujete. Tedy uloží dokument .xls, zavře ho a znovu otevře šablonu. Nezkoušel jsem funkčnost,ale jednotlivá makra používám a fungují. Zkopírujte to celé,upravte cesty a mělo by to jít. Navíc ta makra na otevírání a ukládání lze volat s jinými cestami i z jiných maker,která budete používat. Napsal jsem Vám to jako jeden kód,ale jinak je výhodné ta makra s deklarací (proměnná optional) mít v separátním modulu a volat si je dle potřeby.

#14 Re: Calc » Makrem uložit dokument - Vyřešeno » 4. 6. 2014 21:14:17

Zdravím. Dostal jsem se sem až dnes. Nahoře je doplněna oprava od neutr a pár řádků aby se sešit zavřel. Děkuju za upozornění.

#15 Re: Calc » Makrem uložit dokument - Vyřešeno » 3. 6. 2014 16:31:17

Poračovat může. Zavře se a uloží. Potom si otevřete novou šablonu,případně pokud chcete automaticky znovu otevřít šablonu,tak to lze taky. Myslim,že potřebujete ukládat a cyklicky otvírat novou šablonu,dokud na dotaz msgboxu nezvolíte konec. Pokud je to tak. Až přijdu domů. Dám sem na to kód.

#16 Re: Calc » Makrem uložit dokument - Vyřešeno » 2. 6. 2014 23:28:46

Ještě tedy doplním,že tohle se používá pokud otvíráte sešit jako šablonu. Otevře se bezejména a tímto způsobem se potom pojmenuje podle buňky třeba datumem,nebo pořadovým číslem atd. Možná je to ve zkratce to co neutr rozepsal výše. Určitě si to dobře pročtěte,jelikož p.neutr vždycky dobře směruje. Navíc a možná to dělá záměrně,to nedá zadarmo,takže se člověk pak při tom naučí problém zvládnout sám.

#17 Re: Calc » Makrem uložit dokument - Vyřešeno » 2. 6. 2014 07:17:02

Omlouvám se. Přehlédl jsem,ještě jedno znaménko + má t o vypadat takto ("blabla\"+nazev+".xls")
Pro kontrolu. Když je to správně,text mezi uvozovkami je červený a proměnná mezi plusy zelená.
Opravil jsem rovnou ten kód nahoře,tak by to snad už mělo fungovat.

#18 Re: Calc » Jak smazat makrem sešit? VYŘEŠENO » 1. 6. 2014 22:06:17

Já to ještě nezkoušel. Ale divný se mi to zdálo. Příkazem kill se v promptu zabíjí procesy,ale může být. Mkdir je ale jasný.
Funguje to jak má,takže děkuju a vyřešeno.

#19 Re: Calc » Jak smazat makrem sešit? VYŘEŠENO » 1. 6. 2014 06:49:30

Díky. Vyhledávání mi vyhazovalo vsechno možný. Zajímavý. Jsou to linuxový příkazy,jen mkdir dělá pravý opak.

#20 Calc » Jak smazat makrem sešit? VYŘEŠENO » 31. 5. 2014 18:56:12

rejze
Odpovědí: 4

Zdravim. Nemůžu nikde najít jak makrem smazat celý sešit poté,co ho upravený uložím jinam.
Mohu poprosit o radu? Díky.

#21 Re: Calc » Makrem uložit dokument - Vyřešeno » 31. 5. 2014 18:42:15

Zdravím. Jen pro upřesnění. Pracujete v CALC se souborem .xls? To by mohlo vysvětlovat,proč si tlačítko nepamatuje přiřazenou funkci. Ukládání pod názvem podle obsahu buňky lze takto.

Sub uloz
Dim bunka_nazev as object,document as object
Dim nazev as string

Sheets = ThisComponent.Sheets 'tohle scházelo
Sheet = Sheets.getByIndex(0) 'tohle scházelo
bunka_nazev = sheet.GetCellByPosition (9,6) 'vybere bunku J7 - tohle je upravené
nazev = trim(bunka_nazev.string)
uloz_novy_sesit ("/home/já/dokumenty/"+nazev+".xls") 'zustane promenna nazev+".xls" cestu nutno upravit
      zavri
      otevrit("Cesta k sablone/sablona.ots")
end sub

Sub uloz_novy_sesit (optional cesta as string)
dim oDoc as object
on error goto chyba
  oDoc=ThisComponent
  with oDoc    
       if (not .hasLocation) or .isReadOnly then' pokud jeste nebyl ulozen, nebo je jen pro cteni
        .storeAsURL(ConvertToURL(cesta), Array()) ' ulozit jako
      else
        .store() ' ulozit
      end if
      end with
  exit sub
chyba:
  msgbox("chyba!!!",0,"Chyba uloz_novy_sesit")
stop
end sub

sub zavri
dim oDoc as object
oDoc=ThisComponent
oDoc.Close(true)
end sub

Sub otevrit(optional cesta as string)

	Dim oArgs(2) As New com.sun.star.beans.PropertyValue 
	Dim oDoc
		oFileName = cesta 
		oURL = ConvertToUrl(oFileName)
			oArgs(0).Name="AsTemplate"
			oArgs(0).Value= true
			oArgs(1).Name="TemplateName"
			oArgs(1).Value = "oCalc_template"
			oArgs(2).Name="TemplateRegionName"
			oArgs(2).Value= "oCalcTemplateRegion"
		oDoc = StarDesktop.LoadComponentFromUrl(oURL, "_blank", 0, oArgs())
	Dim oGArgs
	Dim oDocArgs$ as String
	Dim i%
		On Error Resume Next
			oGArgs = oDoc.getArgs()
			for i = 0 to UBound(oGArgs)
				oDocArgs = oDocArgs & oGArgs(i).Name & " = "
				oDocArgs = oDocArgs & oGArgs(i).Value
				oDocArgs = oDocArgs & Chr$(10)
			next i
End Sub

Tlacitku priradite prvni makro uloz a to si zavolá uloz_novy_sesit.

Mělo by to fungovat. Také si upravte bunku J7 podle toho kam vkládáte ten název.

#22 Re: Calc » Zamčení makra - VYŘEŠENO » 28. 4. 2014 10:37:05

Díky. Zálohuju a zkusím. Každopádně pracovat se s tim bude jinde než kde to tvořím,tak uvidíme. Mě nakonec o to zabezpečení tak nejde. Stejně to potom sem na fórum dám i s díky p.Gešvantnerovi a Sedláčkovi za dobré základy. Ovšem manželka pro kterou tohle vyrábím to nechce v práci nechat k používání. Původně jí totiž dali na fakturaci jen holou tabulku,která měla formu pro tisk a jinak se vše vyplňovalo ručně včetně DPH podle kalkulačky. Teď rok pracuje s mými tabulkami,které jí hned sebrali a dělal tam na tom kdekdo. Ty jsou bez maker,ale práci jí to zjednodušilo hodně,tak finální verzi odlifrovala na dropbox a v PC tam nic nenechává. Teď jsem se rozhodl,že se budu učit dál a že k tomu napíšu makra. Nastudoval jsem seriál p.Sedláčka,ale bylo to jako nabiflovat slovník a zkoušet mluvit cizí řečí. Pak jsem našel seriál p.Gešvantnera,začal v tom upravovat a chápat jak to funguje. Teď se prozměnu vracím k Sedláčkovi pro základy a rázem se mi slovník jeví velmi užitečný.
Nakonec jsem tedy předělal tabulky p.Gešvantnera k obrazu svému a teď to s pomocí p.Sedláčka a taky konkrétně Vašich neocenitelných nápověd vylepšuju. Dobrý zdroj informací je též Pitonyak.

#23 Calc » Zamčení makra - VYŘEŠENO » 18. 4. 2014 20:02:04

rejze
Odpovědí: 2

Zdravim. Zajímalo by mě,zda je možno zabezpečit napsaná makra proti úpravám. Řeším teď přístup do programu přes heslo,ale to stačí jen pro běžného uživatele. Kdokoli kdo se v makrech jen trochu vyzná to snadno vyřadí. Díky za info.


____________________________________________________
Značím jako vyřešené

;o)

#24 Calc » Načtení vybrané buňky do proměnné - VYŘEŠENO » 9. 4. 2014 09:49:27

rejze
Odpovědí: 0

Zdravím. Potřeboval bych načíst obsah právě vybrané buňky do proměnné a nemůžu najít příkaz. Ta buňka je už předem vybrána jiným makrem a to podle obsahu vedlejší buňky,takže s GetCellByPosition si nevystačím. Našel jsem ještě getCurrentSelection ale to mi hází chybu metoda nenalezena. Díky za radu.
EDIT: Vyřešil jsem to. Víc hledat v hlavě míň na netu. Vlastně jsem měl jen určenou buňku a nedal řádek promenna=trim(bunka_promenna.string)

#25 Re: Calc » Proč je rozdíl jak sešit otevřu » 21. 3. 2014 13:10:21

Díky teď mi zrovna došlo v čem je problém. Makro LinkAktu musí být voláno z makra ovladani.otevrit. Když jsem ho volal až po vystoupení z otevřít,bralo to jako ThisComponent sešit s tím ovládacím panelem a ne fakturu. Tedy to i velké díky Vám funguje.
EDIT:  Nakonec byl problém uplně jinde a byla to předčasná radost. Teď už to opravdu jde. Každopádně jsem musel smazat list ve kterém ty odkazy byly a nechat ho vytvořit tím makrem. Ty odkazy co jsem tam měl byly jiné povahy a to makro je neregistrovalo. Jen bych rád věděl jestli lze v tomhle případě nějak ošetřit v dalších listech ty REF co tam vzniknou když ten list smažu. Po vytvoření nového se to bohužel musí všechno ručně opravit a taky najít.

Zápatí

Používáme FluxBB