Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno Tabuľkový zošit - automatické prispôsobenie šírky buniek na základe počtu a rozmerov strany

Ahojte,

potreboval by som nejakým spôsobom automaticky prispôsobiť šírku a výšku buniek v celom hárku na základe počtu vyplnených (a orámovaných) buniek, alebo resp. na základe toho po kadiaľ posledná bunka siaha, a podľa rozmerov strany s určitým nastavením okrajov.

Príklad:

mám vyplnené bunky v stĺpci A, B a C (3 stĺpce). Ak je strana nastavená na výšku, potreboval by som aby sa šírka nastavila na (210mm - (2 * 20mm (okraje))) / 3 (počet stĺpcov) = 56.66 mm.

Ako toto docieliť?

LibreOffice 6.4.7.2

Řešení:

Vypočítaš si matematický vzťah medzi počtom stĺpcov a šírkou stĺpca, aby sa počet stĺpcov pri danej šírke zmestil na Tebou danú šírku strany.
U mňa v Exceli pri 2 cm L a R okrajoch je tento vzťah cca:
84 - (pocet - 1) * koef) / pocet
pričom koef = 0,7
pocet je počet stĺpcov aktuálnej oblasti.
84 je šírka jedného stĺpca, ktorá sa ešte zmestí do Tebou udanej šírky hárka A4 pri jednom stĺpci, než začne Excel zalamovať.
Koeficient koef je potrebný kvôli tomu, že pri potrebe dvoch stĺpcov sa ich šírky nebudú rovnať šírke pôvodného jedného stĺpca deleného dvomi...
U LibreOffice to bude určite iné.
Potom zadáš do editora kódu nasledujúci kód, u mňa v Exceli:

Sub NastavSirky()
    ActiveWorkbook.Save
    pocet = Range("A1").SpecialCells(xlLastCell).Column
    koef = 0.7
    For i = 1 To pocet
    Columns(i).ColumnWidth = (84 - (pocet - 1) * koef) / pocet
    Next i
End Sub

A potom nastavíš udalosť, pri ktorej má dôjsť k nastaveniu šírok (napr tlačidlo, ktorým pošleš materiál na tlačiareň, najprv vykoná výpočet a následne materiál vytlačí)
Je tam, žiaľ, jeden trik, keďže Excel nevie zistiť skutočnú poslednú bunku, pokiaľ nastala zmena ku zmenšeniu "aktuálnej" oblasti (pričom som musel pripustiť možnosť výskytu medziľahlých prázdnych riadkov).
Tým trikom je uloženie zošita, kedy sa Excel spamätá a zistí si skutočnú adresu poslednej bunky...
No a čo ostáva na Tebe, je aplikácia tohto Excelovského kódu do LibreOffice
Problémom však bude, ak vypočítaná šírka nebude postačovať na to, aby sa do nej zmestil celý obsah bunky...
Ale dá sa aj to ošetriť... najprv si dáš urobiť automatické prispôsobenie šírok obsahu (v Exceli je to dvojklik na pravú hranu záhlavia prispôsobovaného stĺpca, pri viacerých stĺpcoch musia byť vybrané všetky stĺpce) a zistíš najširší rozmer stĺpcov aktuálnej oblasti. Potom keď dáš vypočítať šírku Tebou požadovaným spôsobom, zistíš, či vypočítaný rozmer bude väčší, ako onen vypočítaný najširší stĺpec. Ak je väčší, bude to ok, ak nie, potom sa síce šírky prispôsobia, ale ich obsah bude presahovať mimo rozmer. Toto sa dá poriešiť tým, že povolíš zalamovanie obsahu buniek.
Tým však môže nastať to, že to, čo sa predtým na dĺžku zmestilo na jednu stranu, presiahne i na druhú... Atď atď...

Předmět Autor Datum
Vypočítaš si matematický vzťah medzi počtom stĺpcov a šírkou stĺpca, aby sa počet stĺpcov pri danej…
robert13 19.11.2022 18:13
robert13
Ďakujem za odpoveď, vyskúšam, pozriem. poslední
Ale 19.11.2022 18:29
Ale

Vypočítaš si matematický vzťah medzi počtom stĺpcov a šírkou stĺpca, aby sa počet stĺpcov pri danej šírke zmestil na Tebou danú šírku strany.
U mňa v Exceli pri 2 cm L a R okrajoch je tento vzťah cca:
84 - (pocet - 1) * koef) / pocet
pričom koef = 0,7
pocet je počet stĺpcov aktuálnej oblasti.
84 je šírka jedného stĺpca, ktorá sa ešte zmestí do Tebou udanej šírky hárka A4 pri jednom stĺpci, než začne Excel zalamovať.
Koeficient koef je potrebný kvôli tomu, že pri potrebe dvoch stĺpcov sa ich šírky nebudú rovnať šírke pôvodného jedného stĺpca deleného dvomi...
U LibreOffice to bude určite iné.
Potom zadáš do editora kódu nasledujúci kód, u mňa v Exceli:

Sub NastavSirky()
    ActiveWorkbook.Save
    pocet = Range("A1").SpecialCells(xlLastCell).Column
    koef = 0.7
    For i = 1 To pocet
    Columns(i).ColumnWidth = (84 - (pocet - 1) * koef) / pocet
    Next i
End Sub

A potom nastavíš udalosť, pri ktorej má dôjsť k nastaveniu šírok (napr tlačidlo, ktorým pošleš materiál na tlačiareň, najprv vykoná výpočet a následne materiál vytlačí)
Je tam, žiaľ, jeden trik, keďže Excel nevie zistiť skutočnú poslednú bunku, pokiaľ nastala zmena ku zmenšeniu "aktuálnej" oblasti (pričom som musel pripustiť možnosť výskytu medziľahlých prázdnych riadkov).
Tým trikom je uloženie zošita, kedy sa Excel spamätá a zistí si skutočnú adresu poslednej bunky...
No a čo ostáva na Tebe, je aplikácia tohto Excelovského kódu do LibreOffice
Problémom však bude, ak vypočítaná šírka nebude postačovať na to, aby sa do nej zmestil celý obsah bunky...
Ale dá sa aj to ošetriť... najprv si dáš urobiť automatické prispôsobenie šírok obsahu (v Exceli je to dvojklik na pravú hranu záhlavia prispôsobovaného stĺpca, pri viacerých stĺpcoch musia byť vybrané všetky stĺpce) a zistíš najširší rozmer stĺpcov aktuálnej oblasti. Potom keď dáš vypočítať šírku Tebou požadovaným spôsobom, zistíš, či vypočítaný rozmer bude väčší, ako onen vypočítaný najširší stĺpec. Ak je väčší, bude to ok, ak nie, potom sa síce šírky prispôsobia, ale ich obsah bude presahovať mimo rozmer. Toto sa dá poriešiť tým, že povolíš zalamovanie obsahu buniek.
Tým však môže nastať to, že to, čo sa predtým na dĺžku zmestilo na jednu stranu, presiahne i na druhú... Atď atď...

Zpět do poradny Odpovědět na původní otázku Nahoru