Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Englische Monate als Deutsche erkennen

Englische Monate als Deutsche erkennen
19.09.2005 16:42:59
Horst
Hallo Forum,
habe ein kniffliges Problem. Wie ist es möglich in einem VBA-Code englische Monatsbezeichnungen wie z.B. Oct-05, in ein stinknormales Okt. 05 oder Okt 05 umzuwandeln, ohne die Ländereinstellung im System zu verändern.
Horst
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Englische Monate als Deutsche erkennen
19.09.2005 16:46:30
joko0803
Hallo Horst,
es ist davon abzuraten ein VBA in deutscher Sprache zu installieren.
Die Monatsnamen in deinem Excel-Sheet kannst du allerdings umstellen wenn du die Ländereinstellungen entsprechend anpasst.
Gruß
John
AW: Englische Monate als Deutsche erkennen
19.09.2005 17:04:12
Peter
Hallo Horst,
wie und wo bekommst du die englischen Monate geliefert?
Wie sehen die aus? Jan-05, Feb-05, Mar-05 oder wie?
Mit Select Case solltest du doch relativ schnell zu einer Übersetzung kommen!?
Viele Grüße Peter
Das Forum lebt auch von den Rückmeldungen.
Anzeige
AW: Englische Monate als Deutsche erkennen
19.09.2005 18:15:47
Horst
Hallo Peter,
danke für die Rückmeldung. Folgende Formate sind möglich:
Oct-05 für Oktober 05
Q4 05 für Quartal 4 in 05
Cal 06 für Kalenderjahr 06
15-Oct-2005 für diesen 15 Oktober.
Ich selber benötige daraus die Angabe wie Okt. 05 oder KJ 06, bzw. 15.Okt. 05
Die Daten bekomme ich aus einen externen Excelmappe geliefert und dachte ich könnte sie bequem umwandeln. Allerdings sind die Daten jeden Tag neu in dieser englischen Schreibweise. Deshalb möchte ich diese Umwandlung automatisieren.
Denke mittlerweile auch, dass ein case-Anweisung am schnellsten zum Ziel führt. Oder hast Du noch einen Trick in der Tasche :-)
Horst
Anzeige
AW: Englische Monate als Deutsche erkennen
19.09.2005 18:22:55
Peter
Hallo Horst,
ich habe keinen weiteren Trick - nur reelle 'Handarbeit' - siehe beigefügtes Muster.
https://www.herber.de/bbs/user/26748.xls
Viele Grüße Peter
Das Forum lebt auch von den Rückmeldungen.
AW: Englische Monate als Deutsche erkennen
19.09.2005 18:34:12
Horst
Danke Peter,
Problem damit gelöst.
Schönen Abend noch.
Horst
Anzeige
AW: Englische Monate als Deutsche erkennen
21.09.2005 21:18:41
Peter
Hallo Horst,
spät, aber nicht zu spät (hoffe ich) eine Lösung für all deine Probleme.


Option Explicit
Option Base 1
Sub Uebersetzen()   '  Kürzel von Englisch nach Deutsch übersetzen
'   Wichtig: 'Option Base 1' - muss eingefügt werden!
'
'   es werden zwei Varianten angeboten: Einmal als Select Case für
'   Spalte D & Variante zwei als kürzere Array-Lösung für Spalte E
'
Dim iZeile     As Integer          ' For/Next für die lfd. Zeile
Dim iPosition  As Integer          ' Position im String
Dim iIndx      As Integer          ' For/Next Index
Dim aMonatE    As Variant          ' die Monatsnamen englisch
Dim aMonatD    As Variant          ' die Monatsnamen deutsch
Dim sMonat     As String * 3       ' Zwischenbereich für engl. Monat
   Application.ScreenUpdating = False
   
   Range("D1:E15").ClearContents
'                         Monat nach Spalte D übersetzen
   For iZeile = 1 To 12
      Select Case Left(LCase(Range("C" & iZeile).Value), 3)
         Case "jan": Range("D" & iZeile).Value = "Jan"
         Case "feb": Range("D" & iZeile).Value = "Feb"
         Case "mar": Range("D" & iZeile).Value = "Mrz"
         Case "apr": Range("D" & iZeile).Value = "Apr"
         Case "may": Range("D" & iZeile).Value = "Mai"
         Case "jun": Range("D" & iZeile).Value = "Jun"
         Case "jul": Range("D" & iZeile).Value = "Jul"
         Case "aug": Range("D" & iZeile).Value = "Aug"
         Case "sep": Range("D" & iZeile).Value = "Sep"
         Case "oct": Range("D" & iZeile).Value = "Okt"
         Case "nov": Range("D" & iZeile).Value = "Nov"
         Case "dec": Range("D" & iZeile).Value = "Dez"
      End Select
      Range("D" & iZeile).Value = Range("D" & iZeile).Value & "-" & Right(Year(Date), 2)
   Next iZeile
'                        CalenderYear übersetzen
   If LCase(Left(Range("C13").Value, 3)) = "cal" Then
      Range("D13").Value = "KJ " & Mid(Range("C13").Value, 5, 2)
   End If
'                        Datum in Form TT-Mmm-JJJ übersetzen
   aMonatE = Array("Jan", "Feb", "Mar", "Apr", "May", "Jun", _
                  "Jul", "Aug", "Sep", "Oct", "Nov", "Dec")
   
   aMonatD = Array("Jan", "Feb", "Mrz", "Apr", "Mai", "Jun", _
                  "Jul", "Aug", "Sep", "Okt", "Nov", "Dez")
   
   For iIndx = 1 To 12               ' aMonatE abarbeiten
      sMonat = LCase(aMonatE(iIndx)) ' englische Monat nach Zwischenbereich
      iPosition = InStr(LCase(Range("C14").Value), sMonat)
      If iPosition > 0 Then          ' gefunden, wenn größer Null
         Range("D14").Value = Left(Range("C14").Value, 2) & ". " & _
            aMonatD(iIndx) & ". " & Right(Range("C14").Value, 2)
         Exit For                    ' For/Next verlassen
      End If
   Next iIndx
'                         Quartal übersetzen
   iPosition = InStr(UCase(Range("C15").Value), "Q")
   If iPosition > 0 Then
      Range("D15").Value = "Quartal " & Mid(Range("C15").Value, iPosition + 1, 1) _
         & " in " & Mid(Range("C15").Value, iPosition + 3, 2)
   End If
'                         Monat nach Spalte E übersetzen
   For iZeile = 1 To 12
      For iIndx = 1 To 12               ' aMonatE abarbeiten
         sMonat = LCase(aMonatE(iIndx)) ' englische Monat nach Zwischenbereich
         iPosition = InStr(LCase(Range("C" & iZeile).Value), sMonat)
         If iPosition > 0 Then          ' gefunden, wenn größer Null
            Range("E" & iZeile).Value = aMonatD(iIndx) & "-" & Right(Year(Date), 2)
            Exit For                    ' For/Next verlassen
         End If
      Next iIndx
   Next iZeile
   
   Application.ScreenUpdating = True
Viele Grüße Peter
Das Forum lebt auch von den Rückmeldungen.
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Englische Monate als Deutsche erkennen


Schritt-für-Schritt-Anleitung

Um englische Monatsnamen in deutsche umzuwandeln, kannst Du ein VBA-Skript verwenden. Hier sind die Schritte:

  1. Öffne Excel und gehe zu "Entwicklertools". Falls diese Registerkarte nicht sichtbar ist, aktiviere sie in den Excel-Optionen.
  2. Klicke auf "Visual Basic", um den VBA-Editor zu öffnen.
  3. Erstelle ein neues Modul:
    • Rechtsklick auf "VBAProject (DeineDatei.xlsx)" > "Einfügen" > "Modul".
  4. Füge den folgenden Code in das Modul ein:
Option Explicit
Option Base 1

Sub Uebersetzen()
    Dim iZeile As Integer
    Dim iIndx As Integer
    Dim aMonatE As Variant
    Dim aMonatD As Variant
    Dim sMonat As String

    ' Englische und deutsche Monatsnamen
    aMonatE = Array("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec")
    aMonatD = Array("Jan", "Feb", "Mrz", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez")

    ' Datenbereich durchsuchen
    For iZeile = 1 To 12
        For iIndx = 1 To 12
            If InStr(1, LCase(Range("C" & iZeile).Value), LCase(aMonatE(iIndx - 1))) > 0 Then
                Range("D" & iZeile).Value = aMonatD(iIndx - 1)
                Exit For
            End If
        Next iIndx
    Next iZeile
End Sub
  1. Schließe den VBA-Editor und kehre zu Excel zurück.
  2. Führe das Skript aus:
    • Gehe zu "Entwicklertools" > "Makros", wähle Uebersetzen und klicke auf "Ausführen".

Häufige Fehler und Lösungen

  • Fehler: "Laufzeitfehler 9: Index außerhalb des gültigen Bereichs"

    • Lösung: Stelle sicher, dass der Datenbereich in der Range-Anweisung korrekt ist und die Zellen tatsächlich Werte enthalten.
  • Fehler: Monat wird nicht erkannt

    • Lösung: Überprüfe, ob die Monatsnamen in der richtigen Schreibweise (z.B. "Oct" statt "october") vorliegen.

Alternative Methoden

Du kannst auch die Excel-Funktion TEXT nutzen, um ein Datum formatiert anzuzeigen:

=TEXT(A1, "[$-407]mmmm")

Diese Formel wandelt ein Datum in der Zelle A1 in die deutsche Monatsbezeichnung um.

Um ein Datum von englisch auf deutsch umzustellen, kannst Du das Datumsformat in den Excel-Optionen ändern.


Praktische Beispiele

  1. Umwandlung von "Oct-05" in "Okt. 05":

    • Verwende die oben genannte VBA-Funktion, um den Monat zu erkennen und in das gewünschte Format zu bringen.
  2. Verwendung von DATWERT:

    =DATWERT("15-Oct-2005")

    Diese Funktion wandelt ein englisches Datum in ein Excel-Datum um, das dann formatiert werden kann.


Tipps für Profis

  • Verwende Arrays: Mit Arrays kannst Du die Monate effizient speichern und bearbeiten. Dies reduziert die Anzahl der Zeilen im VBA-Code.
  • Automatisiere den Prozess: Überlege, das Skript so zu gestalten, dass es automatisch beim Öffnen der Datei ausgeführt wird.
  • Fehlerbehandlung: Implementiere Fehlerbehandlungsroutinen, um Probleme während der Ausführung des VBA-Codes zu erkennen und zu beheben.

FAQ: Häufige Fragen

1. Frage: Wie kann ich englische Monatsnamen in deutsche umwandeln, ohne VBA zu verwenden? Antwort: Du kannst die TEXT-Funktion oder die DATWERT-Funktion verwenden, um die Umwandlung direkt in einer Excel-Zelle vorzunehmen.

2. Frage: Was ist der Unterschied zwischen DATWERT und TEXT? Antwort: DATWERT wandelt einen Text, der ein Datum repräsentiert, in ein tatsächliches Excel-Datum um, während TEXT ein Datum in ein bestimmtes Format umwandelt und als Text zurückgibt.

Verwende diese Methoden, um effizient mit englischen und deutschen Monatsnamen in Excel zu arbeiten!

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige