možností bude více:
- Nejsnažší pro ty co makra nepoužívají je použití vzorce:
=DATUM(ZLEVA(A1;4);ČÁST(A1;5;2);ČÁST(A1;7;2))+ČAS(ČÁST(A1;9;2);ČÁST(A1;11;2);ČÁST(A1;13;2))
za předpokladu že textové vyjádření je v buňce A1. Tento vzorec pak lze např. dvojklikem v pravém dolním rohu buňky s již zapsaným vzorcem, roztáhnout pro všechny buňky s hodnotou ve sloupci A.
- Použití zápisu pro každou buňku ve sloupci B pomocí makra:
Public Sub exctract_data1()
Dim rd As Single
rd = 2
Do While Cells(rd, 1) <> ""
Cells(rd, 2).Formula = "=DATE(LEFT(A" & rd & ",4),MID(A" & rd & ",5,2),MID(A" & rd & ",7,2))+TIME(MID(A" & rd & ",9,2),MID(A" & rd & ",11,2),MID(A" & rd & ",13,2))"
Cells(rd, 2).NumberFormat = "dd/mm/yyyy \/ hh:mm:ss"
rd = rd + 1
Loop
End Sub
tento příklad začíná od druhého řádku a do sloupce B vkládá výše zmíněný vzorec. U tohoto příkladu bych doporučil použít na začátku makra Application.screenupdating = false a na konci to zase povolit - zrychlí to běh makra.
- vložení vzorce a nakopírování do zbývajících buňek (asi to bude rychlejší než předchozí :-) )
Public Sub exctract_data2()
Dim rd As Single
rd = 2
Cells(rd, 2).Formula = "=DATE(LEFT(A" & rd & ",4),MID(A" & rd & ",5,2),MID(A" & rd & ",7,2))+TIME(MID(A" & rd & ",9,2),MID(A" & rd & ",11,2),MID(A" & rd & ",13,2))"
Cells(rd, 2).NumberFormat = "dd/mm/yyyy \/ hh:mm:ss"
Do While Cells(rd, 1) <> ""
rd = rd + 1
Loop
Cells(2, 2).Copy
Range("B3", "B" & rd - 1).PasteSpecial xlPasteAll
End Sub
To co je napsáno vzorcem by šlo vyřešit i v makru, ale je to potřeba?
M@citovat