K odstranění datumů s formátem času použijte toto :
Sub UpravDatum
Dim oDoc
Dim Rok, Mes, Den as long
oDoc = ThisComponent
oSheet = oDoc.CurrentController.ActiveSheet
oTargetCell = oSheet.getCellByPosition(0, 0)
If IsNull(oTargetCell) then
GetLastRow =oTargetCell.getRangeAddress.EndRow
Else
oCursor = oSheet.createCursorByRange(oTargetCell)
oCursor.gotoEnd
LR = oCursor.getRangeAddress.EndRow
End if
For i = 0 To LR
sVal = LEFT(oSheet.getCellByPosition(0, i).String,10)
oSheet.getCellByPosition(0, i).String = sval
Rok = MID(sval,1,4)
Mes = MID(sval,6,2)
Den = MID(sval,9,2)
'Buď hodnota kterou převedeme na formát DD:MM:YYYY (= formát 37), nebo D:M:YYYY (= formát 30)
'__________________________________________________________
oSheet.getCellByPosition(0, i).value = DateSerial(Rok, Mes, Den)
oSheet.getCellByPosition(0, i).NumberFormat = 37
'__________________________________________________________
'Nebo jako řetězec (zarovnáno doleva), který ovšem Calc čte jako číslo
'oSheet.getCellByPosition(0, i).string = DateSerial(Rok, Mes, Den)
Next i
End Sub
To co popisujete je ukázkou převodu z CSV (nebo jen TXT) a datum je v čistě textové formě kterou Calc nerozpoznal. Ani makro od kamlana to nepřečte správně. Není to jenom estetická vada a problém by s tím měly i vzorce. To vše stačilo řešit ukázkou dat - třeba jen 50 řádků.
Makro z textu vytvoří čitelný formát datumu, ale chvíli to trvá. Máte na výběr dva druhy - zarovnání doleva jako text, který už Calc přečte jako číslo, nebo přímo číslo - zarovnané doprava. Variantu která se Vám víc líbí si ponechte a tu druhou smažte. (Aktivace a deaktivace kódu je pomocí jednoduchých uvozovek.)
Kamlan by to mohl zabudovat přímo do svého kódu. Já bych jeho kód upravoval nerad - to se nedělá pokud je autor aktivní. Takže nejprve spusťíte kód výše a na něj můžete napojit před koncem makro od kamlana.
Lze to udělat i vzorci v pomocném sloupci - například jako =LEFT(A1;10), ale toto musí být ještě upraveno tak aby vzniklo čitelné číslo - to se dělá specializovanými funkcemi. Myslím, že nyní už o vzorce zájem nemáte, proto si vysvětlování detailů odpustím.
Přeji úspěch
PS : pokud byste potřeboval originál původního formátu YYYY/MM/DD, přeformátujte buňky sloupce s datumem z volby FORMÁT > BUŇKY > ČÍSLA > DATUM a v kolonce formátovací kód zadejte YYYY/MM/DD.
Editoval neutr (5. 7. 2021 07:17:28)
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É