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

#52 Re: Calc » Filtr pomocí makra VYŘEŠENO » 13. 2. 2022 10:41:40

Zkusete si projít tuto stránku. https://wiki.openoffice.org/wiki/Docume … e_Library) . Datum byť zadané jako string se převede do date value pokud je proměná typu date "dim date_od as date"

#53 Re: Calc » Filtr pomocí makra VYŘEŠENO » 12. 2. 2022 20:02:02

tak v tom případě zkuste .Operator = com.sun.star.sheet.FilterOperator.EQUAL, protože text asi nemůže být gerater nebo less

#54 Re: Calc » Jak dohledat jiné množství než je uvedeno v buňce (2)? - VYŘEŠENO » 12. 2. 2022 19:55:21

Nestačilo by vložit řádek? Jinak písmena jsou funkčně využita ve vzorcích. Odstranit je můžete tak že ve vzorcích v tabulce pod nimi místo odkazu na tato písmena napíšete &"B"& resp. písmeno dle stávajícího názvu sloupce.

#55 Re: Calc » Filtr pomocí makra VYŘEŠENO » 12. 2. 2022 16:08:37

nevím jaké jsou všechny možnosti, ale když filtruji datum, tak posuzuiji všechny hodnoty data samostatně takto podminka(0).NumericValue = DateSerial(D(0),D(1),D(2)) přičemž v matici D mám (0)rok, (1) měsíc, (2) den, operátor grater_equal je OK. Určitě vám tam nebude fungovat StringValue - zkuste pohledat něco jako DateValue ...


EDIT: v prohledávaném sloupci mám normáně datumy "1.1.2022" jen to kritérium mám zapsáno bokem v té rozložené formě.



EDIT2: jo a .isNumeric = True

#56 Re: Calc » Jak dohledat jiné množství než je uvedeno v buňce (2)? - VYŘEŠENO » 12. 2. 2022 15:34:13

To řešení je krapet jiné, matice se nepodařilo použít, protože funkce MATCH potřebuje pěkně seřazené hodnoty. Proto "komprimuji" limity z daného řádku zase pomocí funkce INDIRECT, problém akorát je, že neexistující limity je potřeba doplnit větším číslem než je jakýkoli limit v ceníku (nic lepšího mne bohužel nenapadlo, nuly nefungují protože pak je oblast nesařazená a výsledky jsou chybné). V tomto pak umí funkce MATCH naleznout sloupeček s nejbližší nižší hodnotou, resp. "1" pokud je zadané množství menší než první limit (funkce IFNA). Zbytek už je obdobný jako minule.


https://drive.google.com/open?id=112HCf … p=drive_fs

#57 Re: Calc » Jak dohledat jiné množství než je uvedeno v buňce (2)? - VYŘEŠENO » 12. 2. 2022 14:20:25

Mater_2 má v ceníku dva řádky? (zatím předpokládám že to je chyba a má to být mater_3, jinak je to totiž asi na hranici možností řešení pomocí vzorců)

#60 Re: Calc » Jak dohledat menší/větší množství než je uvedeno v buňce? - VYŘEŠENO » 9. 2. 2022 09:09:12

a zde je tedy upravená verze. Ceník v samostatném listu. Vzorce upraveny do klasické podoby typ "A1". Na listu "pom" matice limitů pro každý jednotivý vyplněný materiál a na řádcích k zadanému materiálu pak pomocí platnosti dat výběr limitů (pouze informační). Přidán sloupec se zobrazením nalezeného limitu.


https://drive.google.com/open?id=10k9fq … p=drive_fs

#61 Re: Calc » Jak dohledat menší/větší množství než je uvedeno v buňce? - VYŘEŠENO » 9. 2. 2022 08:46:08

pro případ dalšího listu je potřeba vzorce tvořící adresy upravit např. takto: ="cenik!R"&E2&"C2:R"&F2&"C2" (název listu ukončený vykřičníkem; písmeno R značící řádek (row); číslo řádku (odkazem na buňku E2);písmeno C zančící sloupec (column); číslo sloupce - na externím listu to bude asi 2 a v dalším vzorci 3). Ve sloupci H tedy ="cenik!R"&E2&"C3:R"&F2&"C3". Tohle je jiný způsob zadání adresy. Např. buňka D8 na listu "list2" bude touto formou zapsána list2!R8C4.


Vlastně by to šlo i klasicky. (Abych vám trochu zamotal hlavu :-) pak bude vzorec vypadat takto: ="cenik!B"&E2&":B"&F2 a takto: ="cenik!C"&E2&":C"&F2 (množství je ve sloupci B, cena je ve sloupci C). Ve funkci INDIRECT(...;1) je pak potřeba mít druhý parametr nastaven na "1". Asi to bude takto pro vás jednoduší. Systém zápisu typu "R1C1" tady nemá vlastně úplně opodstatnění, protože sloupce známe předem (bral jsem to řešení ze nějakého svého souboru, kde byly i sloupce proměnlivé, takže to bylo potřeba, u vás to bylo sice fukční ale zbytečné)


Pokud budete chtít doplnit "nalezené množství, které je pro zadané množství určující" pak stačí ve sloupci H upravit adresu na celou "oblast" tedy cenik!BxCy (x a y jsou nalezené řádky) a pomocí funkce INDEX si na příslušném řádku zobrazíte jak ono množství INDEX(oblast;řádek;1) a dále cenu INDEX(oblast;řádek;2).

#62 Re: Calc » Jak dohledat menší/větší množství než je uvedeno v buňce? - VYŘEŠENO » 8. 2. 2022 18:52:35

add sloupec F: jde o maticový vzorec (jinak bohužel poslední výskyt nelze zjistit). Napíšete základní vzorec tzn.: =MAX(IF($N$1:$N$7=A2;ROW($N$1:$N$7);0)) (resp. vlastní adresy) a poté stisknete CTRL+SHIFT+ENTER tím vzorci řeknete že je maticový, což se vyznačí tak, že se celý vzorec uzavře do složených závorek (ty závorky nepíšete, doplní se samy). V tomto případě je výsledkem jediná hodnota, tedy ne matice jako třeba ve sloupci K. Do dalších buněk vzorec dostanete tak že jej uložíte do ctrl+c a dále vložíte ctrl+V. Nesmí se táhnout "za křížek".
Na pořadí sloupců nezáleží, ale jako první se zjišťuje první a poslední výskyt daného materiálu, tedy číslo řádku (sloupce E a F). Pak se vytvoří text adresy oblasti (sloupce G a H). Pak se v dané oblasti nalezne množství nejbližší nižší než zadané množství (sloupec I, fce MATCH)(tzn. např pro 29 najde 10, pro 32 najde 30, pro 9 nenalezne nic, proto se uvažuje první hodnota (funkce IFNA(...;1). Následně se z vedlejšího sloupce pomocí INDEX odečte cena (sloupec D)

Sloupc K je jen pomocný, výsledkem této matice je pouze seznam limitů pro materiál zadaný v buňce C1

Sloupce C je pouze informativní, pod tlačítkem zobrazuje pouze limity vygenerované ve sloupci K, tedy vztažené k materiálu v C1. Pokud by položek ve sloupci A bylo nějaké rozumné množství (třeba do 50), tak by asi šlo nachystat 50 matic (sloupec K) asi někde na pomocném listu a pak by mohla být nabídka limitů na každém řádku pro každý zadaný materiál.

#63 Re: Calc » Jak dohledat menší/větší množství než je uvedeno v buňce? - VYŘEŠENO » 7. 2. 2022 22:42:12

Zkuste si prohlídnout tento soubor: https://drive.google.com/open?id=10jc2h … p=drive_fs


Není to úplně elegantní. Ve sloupci "K" je matice (ukládá se trojhmatem CTRL+SHIFT+ENTR) a ve skutečnosti bude mít 15tisíc řádků přičemž ty údaje o limitech budou na stjném místě jako v ceníku tedy např. řádky 11356 až 11360 :-). Ve sloupci C jsou pak tyto údeje zkonsolidovány pomocí platnosti dat, kdy tato funkce umí seřadit hodnoty. To by šlo také zobrazovat pomocí funkce SMALL, záleží na uspořádání. Dojít na cenu za kus je pak řešeno poměrně složitě pomocí proměnných adres a funkce INDIRECT. Určitě by se to dalo ale více zkomprimovat aby nebylo tolik pomocných sloupců.

EDIT: Ve sloupci "F" je zjišťován poslední řádek daného materiálu také pomocí matice, musí se ukládat trojhmatem a potom rozkopírovat (né táhnout, tažením se roztahuje matice, což je v tomto případě nežádoucí)

#64 Re: Calc » Jak dohledat menší/větší množství než je uvedeno v buňce? - VYŘEŠENO » 7. 2. 2022 10:12:58

Dobrý den. Záleží na tom zda chcete množstevní limity jako informaci, nebo automatickou změnu zadaného množství na nějaký nejbližší limit. Případně ještě je možnost omezení zadání množství pouze ve výši limitů. Také záleží na tom jak jsou v ceníku dodavatele limity zadané - v jedné buňce, ve více buňkách, v řádku, ve sloupci ...

Jako informaci si množstevní limity můžete vyhledat do nějaké vedlejší buňky pomocí vlookup ... (myslím že "optické" vyhodnocení bude tady nejefektivnější), limity vyhledáte stejně jako tu cenu.

Nejbližší vyšší limit nalezenete pomocí funkcí INDEX(oblast;1;MATCH(kriterium;oblast;1)), podmínkou je uvedení jednotlivých limitů do jednotlivých buněk a seřazení od nejmenšího k největšímu (v tomto případě v řádku)
Nejbližší nižší limit pak INDEX(oblast;1;MATCH(kriterium;oblast;1)-1)

Omezení zadání pouze limitů můžete provést pomocí data - platnost, ale to asi nebude moc praktické.

#65 Re: Calc » Graf - Uspořádat - Na pozadí » 18. 1. 2022 12:00:43

V toolbaru "kresba" kliknout na šipku (kurzor) "vybrat", tím se přepnete do režimu výběru objektu.

#66 Re: Calc » vložení QR kódu VYŘEŠENO » 14. 1. 2022 15:51:55

Jen pro zajímavost určitý posun v QR kódech. Testoval jsem různé možnosti a ledasco má nějaké mouchy, zejména co se týká rychlosti. Nejefektivněji vypadá využití nějakého interního programu, který lze volat přes příkazový řádek a obrázek uložit a následně vložit na stránku. Takový program je např. zde:https://www.nirsoft.net/utils/qr_code_generator.html. Příkaz se pak formuluje pomocí Shell.

Sub GenQr

REM makro umísťuje QR kód generovaný programem SimpleCodeGenerator.exe,
REM který je zdarma ke stažení zde: https://www.nirsoft.net/utils/qr_code_generator.html
REM obrázek s QR kódem je uložen do počítače a poté umístěn do Listu v přesné velikosti a na přesné souřadnice

  dim doc as object, sList as object

  doc = thisComponent
  sList = doc.Sheets.getByName("List1")
  
  qrkod = sList.GetCellRangeByName("A1").String 'zadání pro kódování do QR
  adresa = sList.GetCellRangeByName("A2").String 'plná adresa pro uložení (předpokládá se adresa bez nesmyslných znaků a mezer, jinak je potřeba použít convertToURL)
   
  shell("c:\simplecodegenerator\SimpleCodeGenerator.exe", 0, "/Save '" & qrkod & "' '" & adresa & "' 10", True)
  
  Dim oDrawPage As Object
  Dim oGraphic As Object, oObj as object
  Dim aSize As New com.sun.star.awt.Size
  Dim aPosition As New com.sun.star.awt.Point
  
  oDrawPage = sList.DrawPage
  
  for i = oDrawPage.Count - 1 to 0 step -1
    oObj = oDrawPage.getByIndex(i)
    If Not oObj.supportsService("com.sun.star.drawing.ControlShape") Then   'maže vše kromě tlačítek
       oDrawPage.remove(oObj)
    End If
  next i
   
  oGraphic = doc.createInstance("com.sun.star.drawing.GraphicObjectShape")

  aPosition.X = 16340
  aPosition.Y = 3200
  oGraphic.setposition(aPosition)
  
  aSize.width=3600
  aSize.height=3600
  oGraphic.setsize(aSize) 
  
  oGraphic.GraphicURL = convertToURL( adresa )
  oDrawPage.add(oGraphic)

  
end sub

P.S. jen pro úplnost, generuji jednorázově cca 400 kódů, takže rozdíly v rychlosti v řádu sekund, jsou nakonec rozdíly v desítkách minut. Navíc použití vzdálených API je nespolehlivé ...

#67 Re: Calc » Soubor *.ods konvertovaný do *.xls - VYŘEŠENÉ » 6. 1. 2022 13:43:29

funkce MID() (v excelu ČÁST()) vrací text bez ohledu zda jde o písmeno nebo číslo. V LO si to funkce VLOOKUP přebere takže když hledá text "2" a najde číslo 2 tak to považuje za úspěšné nalezení. Excel zřejmě hledá "2" a když najde 2 tak to má ze nesouhlasné, protže hledá text a nachází jen číslo. Nevím jak to řesit jinak, třeba se ještě někdo ozve :-)

#68 Re: Calc » Soubor *.ods konvertovaný do *.xls - VYŘEŠENÉ » 6. 1. 2022 13:05:20

v O4 až U4 doplňte =value(...) v excelu pak bude =HODNOTA(...)

#70 Re: Calc » Výpočty časů » 6. 1. 2022 10:47:17

ve slouci D: =IF(A1>B1;1-A1+B1-C1;B1-A1-C1)

! platí jen v případě že výsledný čas je menší než 24 hodin ! Jinak se musí pracovat s celými datumy.

#71 Re: Calc » Výpočty časů » 6. 1. 2022 10:24:24

Problém je ten že některé údaje ve sloupci D jsou záporné. Kvůli zobrazení času - tedy denního úseku - se jeví se jako kladné, ale jde o záporná čísla, takže skutečný součet je záporný. Pokud formát [HH]:MM nastaveníte v celém sloupci D tak se vám to objeví. Tzn. není to formátem ale způsobem výpočtu ve sloupci D. Jinak poradit nedokážu, protože nevím co vlastně chcete spočítat :-(


Zkuste tento vzorec do sloupce D: =IF(A1>0,8;1-A1+B1-C1;B1-A1-C1), hádám že orvní údaj je nějaký začátek práce a problém je s přechodem před 24 hod. Těch 0,8 je cca 19 hodin, takže to je rozhraní pro začátek noční práce. Asi to jde i lépe a všeobecněji ale na to vzorku to funguje.


Už jsem na to přišel:-) =IF(HOUR(A1)>HOUR(B1);1-A1+B1-C1;B1-A1-C1)



EDIT4: nebo úplně jednoduše: =IF(A1>B1;1-A1+B1-C1;B1-A1-C1)

#72 Re: Calc » Složení textu - VYŘEŠENO » 3. 1. 2022 11:39:00

máte zhruba tři možnosti: =CONCAT(A1;B1;C1) nebo =CONCAT(A1:C1) nebo =A1&B1&C1. Já většinou volím tu třetí.

#73 Re: Calc » V buňce se zobrazuje #VALUE! Vyřešeno » 14. 12. 2021 16:20:05

Pravděpodobně je v buňce číslo jako text. Projevuje se to apostrofem na začátku čísla, je to vidět v  zadávacím řádku nebo po dvojkliku na buňku. Léčba je pomocným sloupcem =value(A1) pak případně zkopírovat a vložit na původní místo (pouze čísla).

#74 Re: Calc » Export do PDF - zrušit prázdá místa (odstavce) » 14. 12. 2021 13:27:31

Nevím, asi bych musel vidět ten dokument. Zkuste si zobrazit zalomení stránek horní menu > zobrazit > zalomení stránek. Modrýma čarama zalomení se dá myší posouvat do nějaké lepší polohy. Jinak těžko říct co je tam za problém.
Ještě byste mohl mít nějak špatně nastaven formát stránky. Nastavuje se: horní menu > formát > stránka ... zkontrolujte okraje a formát papíru

#75 Re: Calc » Export do PDF - zrušit prázdá místa (odstavce) » 14. 12. 2021 13:13:12

Buď vytvořit diskrétní tiskové oblasti nebo skrýt řádky. Každá tisková oblast se však tiskne na samostatnou stránku, takže pokud se má zhustit tisk, tak asi jedině tím skrytím řádků.

Zápatí

Používáme FluxBB