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
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.
Um englische Monatsnamen in deutsche umzuwandeln, kannst Du ein VBA-Skript verwenden. Hier sind die Schritte:
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
Uebersetzen
und klicke auf "Ausführen".Fehler: "Laufzeitfehler 9: Index außerhalb des gültigen Bereichs"
Fehler: Monat wird nicht erkannt
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.
Umwandlung von "Oct-05" in "Okt. 05":
Verwendung von DATWERT
:
=DATWERT("15-Oct-2005")
Diese Funktion wandelt ein englisches Datum in ein Excel-Datum um, das dann formatiert werden kann.
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!
Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden
Suche nach den besten AntwortenEntdecke unsere meistgeklickten Beiträge in der Google Suche
Top 100 Threads jetzt ansehen