Excel Forum - Porady, Pomoc,  Excel Help, Excel FAQ Strona Główna
 FAQ  RegulaminRegulamin  Szukaj   Użytkownicy   Grupy   Rejestracja   Profil   Twoje wiadomości   Zaloguj 


Poprzedni temat «» Następny temat
ID tematu: 74037 Skopiuj do schowka Konwertowanie danych na datę
Autor Wiadomość
SZWAJCAR007
Fan Excela


Posty: 66
Wysłany: 24-01-2023, 20:07   Konwertowanie danych na datę

Witam,

jak prawidłowo powinno wyglądać makro kopjujące dane z arkusza "DATA" do arkusza "Do importu" jednocześnie konwertując kolumny zawierające datę na format daty.

Arkusz "Data" jest plikiem eksportowanym innego systemu wraz z takim formatowaniem kolumn.

Ilość wierszy w arkuszu "Data" będzie zmienna tzn. raz będzie np.500 wierszy, a w kolejnym np. 150 wierszy.

Plik w załączeniu

Import-test.xlsm
Pobierz Plik ściągnięto 13 raz(y) 26.32 KB

ID posta: 424575 Skopiuj do schowka
 
 
Maciej Gonet 
Excel Expert


Wersja: Win Office 365
Pomógł: 3049 razy
Posty: 9086
Wysłany: 24-01-2023, 20:37   

Ale gdzie masz to makro kopiujące?
Chodzi tylko o zmianę formatu dat, czy o coś jeszcze?
Jeśli chodzi o daty, to jeśli w systemie docelowym masz format dd.mm.rrrr z kropkami, a w źródle rrrr-mm-dd z kreseczkami, to to jest format rozpoznawany przez VBA jako data, więc wystarczy zwykłe przypisanie, np.
Kod:
Columns("F").Value = Columns("F").Value
ID posta: 424576 Skopiuj do schowka
 
 
nunus67 
ExcelSpec


Wersja: Win Office 2019
Pomógł: 183 razy
Posty: 527
Wysłany: 25-01-2023, 11:48   

Cytat:
jak prawidłowo powinno wyglądać...


może tak:
Kod:
Function LastUsedRow(ws As Worksheet, column As String) As Long
    LastUsedRow = ws.Cells(ws.Rows.Count, column).End(xlUp).Row
End Function

Sub CopyData()
Dim shDATA As Worksheet, shImport As Worksheet
Dim lastR As Long, r As Long, c As Long
Dim aD As Variant                                   'array DATA
Dim aR As Variant                                   'array RESULT

Const Col_1 As Long = 6                             'nr columny z datą
Const Col_2 As Long = 7                             'nr columny z datą

Set shDATA = ThisWorkbook.Sheets("Data")
Set shImport = ThisWorkbook.Sheets("do importu")

lastR = LastUsedRow(shDATA, "A")
aD = shDATA.Range("A7:DD" & lastR)

ReDim aR(1 To UBound(aD, 1), 1 To UBound(aD, 2))

For r = LBound(aD, 1) To UBound(aD, 1)
    For c = LBound(aD, 2) To UBound(aD, 2)
        If c = Col_1 Or c = Col_2 Then
            'najpierw konwertujemy wartosc na date a potem ustawiamy jej format
            'aR(r, c) = Format(CDate(aD(r, c)), "dd mmmm yy")
            aR(r, c) = Format(CDate(aD(r, c)), "dd.mm.yyyy")
        Else
            aR(r, c) = aD(r, c)
        End If
    Next c
Next r

lastR = LastUsedRow(shImport, "A")

With shImport
    .Range("A7:DD" & lastR).Clear
    .Range("A7").Resize(UBound(aR, 1), UBound(aR, 2)) = aR
End With

End Sub


Import-test.xlsm
Pobierz Plik ściągnięto 19 raz(y) 36.21 KB

_________________
Nunus67
ID posta: 424600 Skopiuj do schowka
 
 
SZWAJCAR007
Fan Excela


Posty: 66
Wysłany: 25-01-2023, 12:03   

Dzięki za pomoc
ID posta: 424601 Skopiuj do schowka
 
 
SZWAJCAR007
Fan Excela


Posty: 66
Wysłany: 25-01-2023, 12:57   

Jednak nie do końca jest ok.

Kolumny z datami po konwertowaniu maja format ogólny a nie format daty.
Komórka sformatowana jako data powinna mieć wartość przypisaną do prawej krawędzi komórki, a nie do lewej. Czy można zmodyfikować kod tak aby kolumny z datami po konwertowaniu miały format data?
ID posta: 424603 Skopiuj do schowka
 
 
J_B 
Excel Expert


Wersja: Win Office 2016
Pomógł: 638 razy
Posty: 1529
Wysłany: 25-01-2023, 14:56   

SZWAJCAR007 napisał/a:
Czy można.... aby kolumny z datami po konwertowaniu miały format data?

Zaznacz interesujące cię komórki i uruchom to makro
Kod:
Sub FormatDaty()
    Dim Kom As Range
     Application.ScreenUpdating = False
    For Each Kom In Selection
        Kom.NumberFormat = "m/d/yyyy"
        Kom.Value = format(CDate(Kom.Value), "dd.mm.yyyy")
        Application.SendKeys (Kom.Value & "{Enter}")
    Next
End Sub

Makro musisz uruchamiać z wstążki Deweloper / Makra
nie z okna edytora vba
Może to ci pomoże
ID posta: 424608 Skopiuj do schowka
 
 
SZWAJCAR007
Fan Excela


Posty: 66
Wysłany: 25-01-2023, 18:38   

Dzięki
ID posta: 424615 Skopiuj do schowka
 
 
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group
Theme xandgreen created by spleen& Programosy modified v0.3 by warna
Opieka techniczna www.wip.pl

Archiwum

Strona używa plików cookies.

Kliknij tutaj, żeby dowiedzieć się jaki jest cel używania cookies oraz jak zmienić ustawienia cookie w przeglądarce.
Korzystając ze strony użytkownik wyraża zgodę na używanie plików cookies, zgodnie z bieżącymi ustawieniami przeglądarki.
Sprawdź, w jaki sposób przetwarzamy dane osobowe