Excel Artikelnummern auf gleiche Länge füllen

Dieses Thema Excel Artikelnummern auf gleiche Länge füllen im Forum "Microsoft Office Suite" wurde erstellt von Franky B., 1. Apr. 2005.

Thema: Excel Artikelnummern auf gleiche Länge füllen Hallo Zusammen, ich habe hier ein vermeintlich leichtes Problem, krieg es aber trotzdem nicht hin. Ich habe ein...

  1. Hallo Zusammen,
    ich habe hier ein vermeintlich leichtes Problem, krieg es aber trotzdem nicht hin.
    Ich habe ein Arbeitsblatt mit einer Artikelliste. In der Spalte A steht immer die Artikelnummer, leider aber nicht immer mit gleicher Feldlänge. Wie kann ich die einzelnen Zellen via Makro auf gleiche Länge bringen. Als Füllzeichen soll das Leerzeichen herhalten. ich brauche die Geschichte für eine csv-Übernahme in ein anderes Programm.
    Weiß jemand, wie ich das machen kann.

    Schon mal Danke.

    Frank
     
  2. Hi Franky B.,

    gib doch mal  ein paar Beispiele, wie die Artikelnummern aussehen - Ist und Soll.

    Wichtig ist auch welche Fromatierung haben die Artikelnummern. Sind alle gleich formatiert. Ich hatte letztens ein Problem am Wickel, bei dem es um Aktenzeichen ging. Da stellte sich nach näherer Untersuchung heraus, daß die Aktenzeichen in 18 unterschiedlichen Formaten vorlagen.

    Gruß Matjes :)
     
  3. Hallo Matjes,

    ich habe eine Spalte A in der untereinander die Artikelnummern stehen. Diese können aus Zahlen und Buchstaben bestehen. Das Makro soll nun checken, ob die hinterlegte Artikelnummer eine Länge von 15 Zeichen hat. Ist dies nicht der Fall, soll es die Nummer mit Leerzeichen auffüllen. Die Leerzeichen sollen vor die Nummer gestellt werden.

    Beispiel:

    45673456
    545kj8as82n
    234324812398765
    dsf887876

    nach dem füllen sollen alle Artikelnummern 15 Zeichen lang sein.

    Schon mal Danke.

    Gruss

    Frank
     
  4. Hallo Franky B.,

    nun denn. Format der Artikelnummern wird dabei auf->Text'gesetzt, sonst gehen eventuell die Leerzeichen wieder verloren.

    Gruß Matjes :)

    Code:
    Sub ArtNrAufStringLange15()
      Const c_SP = 1->Spalte A
      Const c_ersteWerteZeile = 1->erste Zeile mit ArtNr ggf. anpassen!!!
      
      Dim ws As Worksheet, l_zeilemax As Long, s_tmp As String, z As Long
      
      Set ws = ActiveSheet
     ->letzte Zeile bestimmen
      l_zeilemax = ws.Cells(ws.Rows.Count, c_SP).End(xlUp).Row
      
      For z = c_ersteWerteZeile To l_zeilemax
       ->Wert aus Zelle
        s_tmp = ws.Cells(z, c_SP).Value
        If Len(s_tmp) > 15 Then
          MsgBox (In Zeile  & z &  hat dir Artikelnummer mehr als 15 Character !!! -> Abbruch)
        End If
        If Len(s_tmp) < 15 Then
         ->Zell-Format = Text setzen
          ws.Cells(z, c_SP).NumberFormat = @
          s_tmp = String(15 - Len(s_tmp), Chr(32)) & s_tmp
          ws.Cells(z, c_SP).Value = s_tmp
        End If
        
       ->zurueckschreiben
        ws.Cells(z, c_SP).NumberFormat = @
        ws.Cells(z, c_SP).Value = s_tmp
        
      Next
      Set ws = Nothing
    End Sub
     
  5. Herzlichen Dank!
    Funktioniert genau so, wie ich es wollte!

    Viele Grüsse

    Frank
     
  6. hi,
    leider versteh ich nicht viel von den Makros. Aber ich such genau das selbe wie es hier beschrieben ist,nur die Leerzeichen sollen auf der rechten Seite erzeugt werden. Also wenn ich max. 35 Zeichen vorgebe und nur 10 Zeichen eingetragen werden, sollen die restlichen Zeichen auf der rechten Seite mit Leerzeichen aufgefüllt werden. Ich habe versucht das Makro hier umzuschreiben,bin dabei aber kläglich gescheitert. Ich hoffe das mir da jemand etwas weiter helfen kann??
     
  7. Hallo booboo,

    also folgendes Makro geht über die Spalte A des aktuellen Blattes und schaut sich die Werte an. Hat der Wert weniger als 35 Zeichen, wird rechts mit Leerzeichen auf 35 Zeichen aufgefüllt. Ist ein Wert dabei, der mehr als 35 Zeichen lang ist, erfolgt die Meldung der Zeile und das Makro beendet sich.

    Anpassen mußt du die Konstante  c_ersteWerteZeile mit der Zeilennummer des ersten zu untersuchenden Wertes.

    Spalte kann in der Konstanten c_SP angepasst werden, für Spalte B eine 2, für Spalte C eine 3, ...

    Auch die gewünschte Gesamtlänge der Artikelnummer kannst Du anpassen, indem Du der Konstanten c_ArtNrSollLaenge  die entsprechende Zahl zuweist.

    Den Makro bringst Du folgendermassen in die Arbeitsmappe:
    (sicherheitshalber erstmal eine Kopie der Arbeitsmappe)
    1. Arbeitsmappe öffnen
    2. VB-Editor öffnen mit Alt+F11
    Links im Projekt-Fenster findest Du VBAProject(Dateiname)
    3. VBAProject(Dateiname) -> rechte Maustaste->Einfügen->Modul
    Es öffnet sich das Modulfenster.
    4. In das Modulfenster kopierst Du per Copy und Paste den Makro.
    5. Anpassungen der Konstanten
    6. mit Alt+S speichern
    7. mit Alt+Q den VB-Editor schliessen
    8. Makro ausprobieren -> Alt+F8->ArtNrAufStringLange35BlancsRechtsAuffuellen auswählen -> Ausführen

    Gruß Matjes :)


    Code:
    Sub ArtNrAufStringLange35BlancsRechtsAuffuellen()
      Const c_SP = 1->Spalte A
      Const c_ersteWerteZeile = 1->erste Zeile mit ArtNr ggf. anpassen!!!
      Const c_ArtNrSollLaenge = 35
      
      Dim ws As Worksheet, l_zeilemax As Long, s_tmp As String, z As Long
      
      Set ws = ActiveSheet
     ->letzte Zeile bestimmen
      l_zeilemax = ws.Cells(ws.Rows.Count, c_SP).End(xlUp).Row
      
      For z = c_ersteWerteZeile To l_zeilemax
       ->Wert aus Zelle
        s_tmp = ws.Cells(z, c_SP).Value
        If Len(s_tmp) > c_ArtNrSollLaenge Then
          MsgBox (In Zeile  & z &  hat dir Artikelnummer mehr als  & _
                  c_ArtNrSollLaenge &  Character !!! -> Abbruch)
          GoTo Aufraeumen
        End If
       ->rechts mit Leerzeichen auffüllen
        If Len(s_tmp) < c_ArtNrSollLaenge Then
          s_tmp = s_tmp & String(c_ArtNrSollLaenge - Len(s_tmp), Chr(32))
        End If
        
       ->zurueckschreiben
       ->Format als Text setzen
        ws.Cells(z, c_SP).NumberFormat = @
        ws.Cells(z, c_SP).Value = s_tmp
        
      Next
    Aufraeumen:
      Set ws = Nothing
    End Sub
     
  8. oh danke,genau so wollte ich es haben. :)
     
  9. mir ist da noch eine Frage beim testen eingefallen. ich wollte zusätzlich noch das selbe mit Spalte D machen(diesmal 10 Zeichen). nur leider klappt das nicht so einfach mit kopieren und auf Spalte D legen,da er ja die selben Variablen benutzt wie bei der Spalte A. wie gesagt, mit Makros kenn ich mich nicht aus. Ich wäre sehr dankbar wenn du mir das zeigen würdest.
     
  10. ahh,hab mich vertan. Bei der Spalte D bräuchte ich die Leerzeichen auf der linken Seite.
     
Die Seite wird geladen...

Excel Artikelnummern auf gleiche Länge füllen - Ähnliche Themen

Forum Datum
Excel-Feature gesucht Microsoft Office Suite 11. Okt. 2016
Excel Tabelle Werte zu ordnen Microsoft Office Suite 23. Sep. 2016
Excel: Bereiche auf 'leer' Überprüfen Microsoft Office Suite 15. Sep. 2016
Import Datensatz inkl = und - Zeichen in Excel/Libre CALC Software: Empfehlungen, Gesuche & Problemlösungen 20. Mai 2016
Bestimmter User kann seine Excel Dateien nicht mehr direkt öffnen Software: Empfehlungen, Gesuche & Problemlösungen 16. Apr. 2016