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

#1 14. 12. 2020 17:03:08

stesticko
Člen
Registrace: 19. 11. 2008
Příspěvků: 5

Nahrazení konců řádky v buňce

Poradil by mne někdo jestli je možné v Calcu docílit vymazání/nahrazení konců/zalomení řádku \n

Mám v poli text jak

3432
Zásilkovna/Z-Point CZ
Daňový doklad:Dobírka Zásilkovna Z-Point ČR
False

Ale jediné, co tam potřebuji je to číslo na začátku.

Dovedu si data překopírovat do Writeru, tak je upravit a vložit zpět, ale potřeboval bych to jako součást makra v Calcu, které dělá další úpravy. V Calcu se mi to nepovedlo.

Díky

Offline

#2 14. 12. 2020 17:19:54

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

Re: Nahrazení konců řádky v buňce

stesticko napsal(a)

Poradil by mne někdo jestli je možné v Calcu docílit vymazání/nahrazení konců/zalomení řádku \n

Mám v poli text jak

3432
Zásilkovna/Z-Point CZ
Daňový doklad:Dobírka Zásilkovna Z-Point ČR
False

Ale jediné, co tam potřebuji je to číslo na začátku.

Dovedu si data překopírovat do Writeru, tak je upravit a vložit zpět, ale potřeboval bych to jako součást makra v Calcu, které dělá další úpravy. V Calcu se mi to nepovedlo.

Díky

     Jste si jistý, že jde o zalomení řádku? To sice existuje stejně jako zalomení sloupce, ale podle popisu jde spíš o zalomení textu v buňce. To se stává například u hypertectových odkazů. Mnohokrát jsem viděl jakoby prázdnou buňku, nebo jen s málo znaky a buňka měla přesto vpravo šipku, která značí zalomení textu.
     Doporučil bych vytáhnout to číslo na začátku pomocí textové funkce - nejlépe =LEFT(odkaz na buňku;počet znaků odleva).


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 14. 12. 2020 17:30:06

ludviktrnka
Člen
Registrace: 9. 7. 2009
Příspěvků: 697

Re: Nahrazení konců řádky v buňce

Takto?

Sub Main

doc = thisComponent
list = doc.getCurrentController.getActiveSheet()
MyString = list.GetCellRangeByName("A1").String
StringToFind = chr(10)
Position = InStr(MyString, StringToFind)-1
MyString = Left(MyString, Position)
MyValue = Val(MyString)
list.GetCellRangeByName("B1").Value = MyValue

End Sub

LibreOffice 5.4.

Offline

#4 14. 12. 2020 17:37:49

ludviktrnka
Člen
Registrace: 9. 7. 2009
Příspěvků: 697

Re: Nahrazení konců řádky v buňce

nebo mnohem jednodušeji vzorcem: =LEFT(A1;SEARCH(CHAR(10);A1)-1)


ještě edit: =VALUE(LEFT(A1;SEARCH(CHAR(10);A1)-1))

Editoval ludviktrnka (14. 12. 2020 17:45:46)


LibreOffice 5.4.

Offline

#5 14. 12. 2020 19:55:42

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

Re: Nahrazení konců řádky v buňce

pro ludvíktrnka :
Já to moc dobře nevidím. spíš bych to viděl na

=REGEX(A1;"\n";"";1), ale také "\n", "\t", "\b", "\>" a "\<"

, nebo dokonce jenom

=LEFT(A1;LEN(A1))

    Podle všeho by měly platit také regulární výrazy zde Regulární výrazy v projektu ICU


Navíc to může vyžadovat zabalení do TRIM() a stejně raději kopirovat a vkládat jako neformátovaný text.

Editoval neutr (14. 12. 2020 19:56:27)


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

#6 16. 12. 2020 14:57:02

stesticko
Člen
Registrace: 19. 11. 2008
Příspěvků: 5

Re: Nahrazení konců řádky v buňce

Díky všem za odpovědi.

Nevím, jak se to tváří v Calcu v buňce, ale když ten text přenesu do texťtáku, tak ho normálně vyhledám i se zalomeníma s \n. Používám doplněk Alt Search.

Ve Writeru zafunguje \nZásilkovna/Z-Point CZ\nDaňový doklad:Dobírka Zásilkovna Z-Point ČR\nFalse"

V calcu to ale použít nejde.

Buňka vypadá tak https://prnt.sc/w3yszh

Ve Writeru https://prnt.sc/w3yujz

S funkcemi moc neumím. Asi nevím, jak je použít. V makru?

Offline

#7 16. 12. 2020 15:04:21

stesticko
Člen
Registrace: 19. 11. 2008
Příspěvků: 5

Re: Nahrazení konců řádky v buňce

Mnohokéré díky, trochu jsem zavzpomínal na školní časy a pochopil, jak na funkce.

=VALUE(LEFT(F7;SEARCH(CHAR(10);F7)-1)) vypadá, že funguje

Jen mi ji kamarád implementuje do našeho makra a mělo by to být super.

Editoval stesticko (16. 12. 2020 15:04:59)

Offline

#8 16. 12. 2020 18:37:12

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

Re: Nahrazení konců řádky v buňce

stesticko napsal(a)

... a pochopil, jak na funkce.

=VALUE(LEFT(F7;SEARCH(CHAR(10);F7)-1)) ...

     Ano to je ten lepší případ který uváděl uživatel "ludviktrnka". Musíme si vysvětlit, že nápověda pro Calc uvádí, že na prípad regulárního výrazu \n a zřejmě i další nahrazování (dialog najít a nahradit) nefunguje. Uvádí se, že se mají manuálně smazat. Popisovaného efektu lze dosáhnout pomocí Ctrl+Enter pro zalomení v buňce, stejně tak naopak tuším Ctrl+Bakspace, ale mělo by to fungovat i bez Ctrl.
     Ale pozor! Uvedený vzorec =VALUE(LEFT(F7;SEARCH(CHAR(10);F7)-1)) nemusí zafungovat vždy. Ještě by to chtělo =VALUE(TRIM(LEFT(F7;SEARCH(CHAR(10);F7)-1))). To co popisujete je z CSV. Jak se tam dostane to zalomení nevím, ale pokud projde CHAR(10), může zřejmě projít také CHAR(13)-nový odstavec, nebo CHAR(9)-odsazení tabulátoru.


     Pokud Vám někdo staví makro, tak by bylo lepší iterovat řetězec na CHR(ary) čísel, popřípadě čárky, nebo tečky (pokud se vyskytuje mezi numerickými hodnotami - to Váš případ není). Nakonec nalezené číselné sekvence čísel ze začátku řetězce při prvním nečíselném znaku useknete a zavedete jako Val(string) - tedy jako číslo.
     Ja sice možné do makra zavést vzorce makrem a pak je naráz převést na číslo (je tam vzorec a i když se dá kopírovat přímo do Writer už jako číslo, stačí malá chyba "například editaci vzorce" a dostanete tam nesmysly).


Přeji úspěch


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í