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

Forumthread: von Jahreszahl nur zwei Stellen -VBA-

von Jahreszahl nur zwei Stellen -VBA-
24.11.2008 12:46:30
Jahreszahl
Hallo,
ich habe innerhalb der Spalte H das Problem, dass sich darin eine Ziffernfolge befindet, die wie folgt aussehen kann: 123/555/08 oder 123/45644/2008 - entscheidend ist nun für mich die Jahresangeabe, die ich gerne generell dann nur auf 2 Stellen "gekürzt" haben möchte, damit dann gesetzte Filter auch sauber abgreifen können. Ich hatte schon einmal versucht, den untenstehenden Auszug aus einem Code anzupassen, bekomme das aber irgendwie nicht hin. Nicht immer, so mußte ich übrigens feststellen, ist als Trenner "/", es kann auch ein "-" sein - zweifelsfrei wird sich aber vor der Jahreszahl immer ein Trenner befinden. Hätte da jemand eine Idee, wie ich den untenstehenden Codeauszug anpassen könnte (der läuft super und schnell)? Danke schon jetzt für die Rückmeldungen.
Herzliche Grüße
Wolfgang

Sub Anpassen
Dim Bereich As Range
Set Bereich = Range(Cells(2, 15), Cells(Cells(Rows.Count, 7).End(xlUp).Row, 15))
With Bereich
.Formula = "=LEFT(G2,3)"
.Value = .Value
End With
End Sub


Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: von Jahreszahl nur zwei Stellen -VBA-
24.11.2008 12:53:01
Jahreszahl
hallo,
wenn die jahreszahl immer am ende, dann von rechts 2 stellen suchen
.Formula = "Right(G2,2)"
oder?
gruß
rofu
AW: von Jahreszahl nur zwei Stellen -VBA-
24.11.2008 12:54:00
Jahreszahl
Hallo,
dann greif doch einfach nur die letzten 2 Stellen ab. Ist dann ja egal, ob die Jahreszahl 2- oder 4-stellig ist.
Gruß
Rudi
AW: von Jahreszahl nur zwei Stellen -VBA-
24.11.2008 12:59:46
Jahreszahl
Hi,
versuch mal folgendes Makro. Es faengt ab der 2ten Zeile an (bin von einer Ueberschrift ausgegangen).
Falls keine Ueberschrift vorhanden die 2 beim "i =" durch eine 1 ersetzen.

Sub anpassen()
Dim i As Double
Dim Letzte_Zeile As Double
Letzte_Zeile = Range("A65536").End(xlUp).Row
For i = 2 To Letzte_Zeile
Cells(i, 8) = Right(Cells(i, 8), 2)
Next
End Sub


Gruß
Yusuf

Anzeige
Sicherheitskopie nicht vergessen o. T.
24.11.2008 13:00:59
yusuf
.
habe mich falsch ausgedrückt
24.11.2008 16:52:00
Wolfgang
Hallo,
zunächst herzlichen Dank für die Rückmeldungen und Beiträge; beim Testen der Dinge wird mir nun klar, dass ich mich da wohl vollkommen mißverständlich und falsch ausgedrückt habe. Die jetzigen Ergänzungen ändern die Spalte H so, dass wirklich nur noch die zweistellige Jahreszahl übrigbleibt. Ich würde gerne erreichen, dass die Ziffern davor stehen bleiben, dann aber nur noch die Jahreszahl als Anhängsel zweistellig stehen bleibt. z.B. anstatt 123/45644/2008 nur noch 123/45644/08. In den Sinn kam mir schon, ob es nicht denkbar sein mag "nur" die 20 vor der 08 zu löschen, weil sich ja alle Datumsangaben mittlerweile auf 2000 und höher beziehen und bis wir dann 'mal 2100 und höher da stehen haben, werden wir wohl nicht mehr hier über Excel sprechen. Ich weiß nicht, ob das vielleicht in diese Richtung umsetzbar wäre? - Ich hatte den Auszug des Codes übrigens als "Muster", nicht auf diese Fallgestaltung bezogen, eingefügt, da er sehr schnell abarbeitet. Danke schon jetzt wieder für die Rückmeldung und nochmals sorry, dass ich mich da doch wohl sehr mißverständlich ausgdrückt habe.
Gruß - Wolfgang
Anzeige
AW: habe mich falsch ausgedrückt
24.11.2008 17:00:00
Herbert
Hi,
einfach suchen nach: /2008
ersetzen durch: /08
ggf. Makro aufzeichnen.
mfg Herbert
auf auf bestimmte Spalten anwendbar?
24.11.2008 19:03:00
Wolfgang
Hallo Herbert,
Danke für die Rückmeldung. Ich habe den nachfolgenden Code mit dem Rekorder aufgezeichnet. Hast Du evtl. eine Idee, ob sich der Code z.B. nur auf Spalte H "herunterbrechen" läßt und ggfs. direkt mehrere Jahreszahlen 2007, 2008, 2009,2010 implementiert werden könnten? Excel läßt diese Möglichkeiten wohl mit dem Makrorekorder nicht zu. Danke schon jetzt wieder für die Rückmeldungen.
Gruß - Wolfgang

Sub SuchenErsetzen()
Cells.Replace What:="/2008", Replacement:="/08", LookAt:=xlPart, _
SearchOrder:=xlByColumns, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
End Sub


Anzeige
hat sich erledigt - Danke
24.11.2008 20:45:00
Wolfgang
Hallo Herbert,
hat sich erledigt, habe noch weiter getestet und versucht und konnte somit den Code ergänzen/abändern, so dass die Fragen, die ich noch im Vorbeitrag hatte, damit geklärt sind.
Danke und herzliche Grüße
Wolfgang
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Jahreszahl in Excel auf zwei Stellen kürzen mit VBA


Schritt-für-Schritt-Anleitung

  1. Öffne Excel und lade die Datei, die die Jahreszahlen enthält.

  2. Drücke ALT + F11, um den VBA-Editor zu öffnen.

  3. Füge ein neues Modul hinzu:

    • Klicke im Menü auf Einfügen > Modul.
  4. Kopiere den folgenden VBA-Code in das Modul:

    Sub Anpassen()
       Dim i As Long
       Dim Letzte_Zeile As Long
       Letzte_Zeile = Range("H65536").End(xlUp).Row
       For i = 2 To Letzte_Zeile
           Cells(i, 8) = Replace(Cells(i, 8), "/" & Right(Cells(i, 8), 4), "/" & Right(Cells(i, 8), 2)
       Next i
    End Sub
  5. Passe die Zeilen- und Spaltenbezüge an, falls nötig. Der obige Code geht davon aus, dass die Daten in Spalte H beginnen und die erste Zeile eine Überschrift hat.

  6. Führe das Makro aus:

    • Drücke F5 oder gehe zu Run > Run Sub/UserForm.

Der Code ersetzt die vierstellige Jahreszahl am Ende der Ziffernfolge durch die zweistellige Version. So wird aus 123/45644/2008 beispielsweise 123/45644/08.


Häufige Fehler und Lösungen

  • Fehler: „Laufzeitfehler 1004“: Dieser Fehler tritt auf, wenn der Bereich nicht gefunden wird. Stelle sicher, dass die Spalte H tatsächlich Daten enthält und die Zellen korrekt referenziert sind.

  • Problem: Nur die Jahreszahl wird geändert: Wenn nur die Jahreszahl geändert wird, musst du den Code anpassen, um sicherzustellen, dass die restlichen Ziffern nicht gelöscht werden. Verwende dafür die Replace-Funktion wie oben gezeigt.


Alternative Methoden

  1. Suchen und Ersetzen:

    • Du kannst auch die Suchen und Ersetzen-Funktion in Excel verwenden:
    • Drücke CTRL + H, um das Dialogfeld zu öffnen.
    • Setze „Suchen nach“ auf /2008 und „Ersetzen durch“ auf /08.
    • Klicke auf „Alle ersetzen“.
  2. Formel:

    • Eine Formel kann auch helfen, die letzten zwei Stellen eines Jahres zu extrahieren, aber sie ist nicht so effizient wie VBA:
    =LINKS(A1;LÄNGE(A1)-4)&RECHTS(A1;2)

Praktische Beispiele

Angenommen, du hast in Zelle H2 den Wert 123/45644/2008. Nach Ausführung des Makros wird dieser in 123/45644/08 umgewandelt. Dies hilft nicht nur bei der Konsistenz deiner Daten, sondern auch bei der Anwendung von Filtern in Excel.


Tipps für Profis

  • Regelmäßige Backups: Stelle sicher, dass du deine Datei regelmäßig speicherst oder eine Sicherheitskopie machst, bevor du Makros ausführst.
  • Testen in einer Kopie: Teste die Makros immer in einer Kopie deiner Excel-Datei, um unerwünschte Änderungen zu vermeiden.
  • Anpassung des Codes: Du kannst den VBA-Code anpassen, um mehrere Jahreszahlen gleichzeitig zu ersetzen, indem du eine Schleife für verschiedene Jahreszahlen hinzufügst.

FAQ: Häufige Fragen

1. Wie kann ich das Makro auf andere Spalten anwenden?
Du kannst die Spaltennummer in Cells(i, 8) anpassen, um das Makro auf eine andere Spalte anzuwenden. Ersetze die 8 durch die entsprechende Spaltennummer.

2. Was, wenn ich mehr als nur die Jahreszahl 2008 ändern möchte?
Du kannst den Code erweitern, um mehrere Jahreszahlen zu ersetzen, indem du mehrere Replace-Befehle hinzufügst oder eine Schleife verwendest, um eine Liste von Jahreszahlen durchzugehen.

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