Spis treści
Wdrażanie Makro VBA to najskuteczniejsza, najszybsza i najbezpieczniejsza metoda na przeprowadzenie dowolnej operacji w Excelu. W tym artykule pokażemy, jak sformatować datę w Excelu za pomocą VBA .
Pobierz Workbook
Darmowy ćwiczeniowy zeszyt Excela można pobrać stąd.
Formatuj datę za pomocą VBA.xlsm
4 Metody formatowania daty w Excelu za pomocą VBA
Spójrz na poniższy przykład, w obu zapisaliśmy te same daty Kolumna B oraz C tak, że kiedy sformatujemy datę w Kolumna C to będziesz wiedział od B Kolumna w jakim formacie była data przed.
1) VBA do formatowania daty z jednego typu na inny w Excelu
Najpierw dowiedzmy się, jak sformatować datę z Komórka C5 w naszym zbiorze danych z VBA do " Wtorek - styczeń - 2022 r. ".
Kroki:
- Naciśnij Alt + F11 na klawiaturze lub przejdź do zakładki Programista -> Visual Basic otworzyć Edytor Visual Basic .
- W wyskakującym oknie kodu, na pasku menu, kliknij Insert -> Moduł .
- Skopiuj poniższy kod i wklej go do okna kodu.
Sub DateFormat() Range("C5").NumberFormat = "dddd-mmmm-rr" 'Dzięki temu data zostanie sformatowana na "wtorek-styczeń-2022" End Sub
Twój kod jest teraz gotowy do uruchomienia.
- Naciśnij F5 na klawiaturze lub z paska menu wybrać Run -> Run Sub/UserForm. Możesz też po prostu kliknąć na mała ikona Play na pasku podmenu, aby uruchomić makro.
Ten kod będzie formatował datę " 11-01-22 " do " Wtorek - styczeń - 2022 r. ".
Możesz również przekonwertować ten format daty na wiele innych formatów. Po prostu postępuj zgodnie z poniższym kodem, aby przekształcić datę w wymagany format.
Sub FormatDate() 'Oryginalna data to "11-01-22" Range("C5").NumberFormat = "dd-mm-yyy" 'To sformatuje datę do "11-01-2022" Range("C6").NumberFormat = "ddd-mm-yyy" 'To sformatuje datę do "Tue-11-2022" Range("C7").NumberFormat = "dddd-mm-yyy" 'To sformatuje datę do."11-Jan-2022" Range("C9").NumberFormat = "dd-mmmm-rr" 'To sformatuje datę do "11-stycznia 2022" Range("C10").NumberFormat = "dd-mm-rr" 'To sformatuje datę do "11-01-22" Range("C11").NumberFormat = "ddd mmm-rr" 'To sformatuje datę do "Tue Jan 2022" Range("C12").NumberFormat = "dddd mmmm-rr" 'To sformatuje datę do "Tuesday January 2022" End Sub
Przegląd
Czytaj więcej: Funkcje Now i Format w Excelu VBA
2. wbudowane VBA do konwersji daty za pomocą funkcji FORMAT
Excel ma swój własny numer seryjny dotyczący poszczególnych dat. Jeśli chcesz poznać numer seryjny dowolnego
konkretnej daty, musisz złożyć wniosek funkcja DATEVALUE .
Załóżmy, że chcesz poznać numer seryjny daty " 11 stycznia 2022 r. ", to należy zapisać formułę jako,
=DATEVALUE("11 stycznia 2022")
Excel poda ci numer seryjny 44572 tej daty.
Teraz przekształcimy tę liczbę w jej odpowiedni format daty.
Kroki:
- W taki sam sposób jak poprzednio, otwórz Edytor Visual Basic od Deweloper zakładka i Wkładka a Moduł w oknie kodu.
- W oknie kodu skopiuj poniższy kod i wklej go.
Sub Format_Date() Dim iDate As Variant iDate = 44572 'Numer seryjny Excela daty "11 stycznia 2022" MsgBox Format(iDate, "DD-MMM-YYY") End Sub
Twój kod jest teraz gotowy do uruchomienia.
Otrzymasz datę " 11 stycznia 2022 r. " w oknie komunikatu.
Czytaj więcej: Jak używać funkcji VBA DateValue w Excelu
Podobne lektury
- Jak wstawić bieżącą datę w programie Excel (3 sposoby)
- Zmienna Date w kodach VBA (7 zastosowań makr z przykładami)
- Uzyskaj bieżącą datę w VBA (3 sposoby)
- Jak używać skrótu do daty w Excelu
3. VBA do przekształcenia daty na podstawie określonej części w Excelu
Załóżmy, że chcesz sformatować określoną część daty, na przykład tylko dzień / miesiąc / rok, a następnie napisz kod jako,
Sub Date_Format() Range("C5").NumberFormat = "mmmm" 'To sformatuje datę na "styczeń" End Sub
Twój kod jest teraz gotowy do uruchomienia.
W " mmmm " w tym kodzie oznacza długą formę nazwy miesiąca.
Ponieważ data jest " 11 stycznia 2022 r. ", więc ten fragment kodu zwróci " Styczeń ".
Możesz Zaimplementuj ten kod, aby sformatować i wyodrębnić dowolną konkretną część, którą chcesz z daty.
Sub FormatDateValue() 'Oryginalna data to "11-01-22" Range("C5").NumberFormat = "dd" 'Spowoduje to sformatowanie daty do "11" Range("C6").NumberFormat = "ddd" 'Spowoduje to sformatowanie daty do "Tue" Range("C7").NumberFormat = "dddd" 'Spowoduje to sformatowanie daty do "Tuesday" Range("C8").NumberFormat = "m" 'Spowoduje to sformatowanie daty do "1" Range("C9").NumberFormat = "mm" 'Spowoduje to.sformatuje datę do "01" Range("C10").NumberFormat = "mmm" 'To sformatuje datę do "Jan" Range("C11").NumberFormat = "yy" 'To sformatuje datę do "22" Range("C12").NumberFormat = "yyy" 'To sformatuje datę do "2022" Range("C13").NumberFormat = "dd-mm" 'To sformatuje datę do "11-01" Range("C14").NumberFormat = "mm-yyy" 'To sformatujedata do "01-2022" Range("C15").NumberFormat = "mmm-yyy" 'To sformatuje datę do "Jan-2022" Range("C16").NumberFormat = "dd-yy" 'To sformatuje datę do "11-22" Range("C17").NumberFormat = "ddd-yyy" 'To sformatuje datę do "Tue 2022" Range("C18").NumberFormat = "dddd-yyy" 'To sformatuje datę do "Tuesday-2022" Range("C19").NumberFormat = "dd-mmm"'To sformatuje datę do "11-Jan" Range("C20").NumberFormat = "dddd-mmmm" 'To sformatuje datę do "wtorek-styczeń" End Sub
Przegląd
4. wstawianie VBA do formatowania daty w określonym arkuszu w Excelu
Jeśli chcesz sformatować datę na podstawie konkretnego arkusza, to najpierw musisz ustawić nazwę arkusza w kodzie, a następnie sformatować datę zgodnie z wymaganym typem.
- Otwórz Edytor Visual Basic od Deweloper zakładka i Wkładka a Moduł w oknie kodu.
- W oknie kodu skopiuj poniższy kod i wklej go.
Sub Format_Date() Dim iSheet As Worksheet Set iSheet = ThisWorkbook.Sheets("Przykład") 'Ustaw arkusz o nazwie "Przykład" iSheet.Range("C5").NumberFormat = "dddd, mmmmdd, yyyy" End Sub
Twój kod jest teraz gotowy do uruchomienia.
Spójrz na 3. linię kodu, w której najpierw ustawiamy " Przykład " arkusza, a następnie sformatować datę tego określonego arkusza Excela.
Wniosek
W tym artykule pokazano, jak sformatować datę w Excelu za pomocą VBA Mam nadzieję, że ten artykuł był dla Ciebie bardzo korzystny. Czuj się swobodnie, jeśli masz jakieś pytania dotyczące tematu.