414 Aufrufe
Gefragt in Tabellenkalkulation von
Moin ! Ich habe oft Excel Dateien ich etwas unübersichtlich Sortiert und nicht  Markiert . Spalte 1 stehen Herkunft, Spalte 2 stehen Artikelnummer, Spalte 3 steht Positionsnummer, Spalte 4 steht Menge, Spalte 5 steht der Preis, Spalte 6 Informationen

Was ich benötige ist eine Sortierung Zeilen nach Werte der Spalte 2 (Artikelnummer) und wenn zum Beispiel alle Artikelnummern Sortiert sind soll Abwechselnd farblich markiert werden, Gruppiert nach der jeweilig Sortierten Artikelnummer . Wünschenswert wäre vielleicht nach jeder Gruppierten Artikelnummer vielleicht noch zur Übersicht eine Leerzeile. Kann man das über ein Script lösen ?

8 Antworten

0 Punkte
Beantwortet von m-o Profi (22.7k Punkte)

Hallo Carsten,

ja das könnte man über ein Skript lösen. Aber wenn du nach jeder Artikelnummer eine Leerzeile einfügen willst, dann musst du diese entweder vor oder nach der nächsten Sortierung löschen.

Wieviele Artikelnummern kann es denn geben (wegen der Anzahl der Farben)?

Aber vielleicht wäre ja auch eine Gruppierung was für dich?

Gruß

M.O.

0 Punkte
Beantwortet von

Hi, 

Danke für deine schnelle Antwort !

Im Prinzip wären das immer neue Dateien wo ich dann das Script jedesmal einfügen würde und Ausführen würde, deshalb wäre Leerzeilen denke ich kein Thema zur nächsten Sortierung

Im Prinzip würde nur eine Farbe ausreichen zur Abwechselnden Markierung das man etwas die Übersicht behält. 

Würde ja gerne hier mal ne Datei Hochladen aber das glaube das geht nicht. habe zwei Screenshots gemacht mit vorher und nachher. Sortierung sollte auch erst ab der zweiten Zeile beginnen das die Spaltenüberschrift bestehen bleibt

0 Punkte
Beantwortet von m-o Profi (22.7k Punkte)

Hallo Carsten,

wie du eine Datei hochladen kannst, kannst du hier nachlesen: Anleitung

Eine Beispieldatei ist besser als ein Screenshot smiley.

Gruß

M.O.

0 Punkte
Beantwortet von

OK, habe eine Beispieldatei erzeugt mit dem Namen orginal wie unser System das Ausspuckt

Zudem eine Beispieldatei wie es aussehen soll wo ich die ersten Zeilen bearbeitet habe

Hoffe das das Hochladen geklappt hat

0 Punkte
Beantwortet von m-o Profi (22.7k Punkte)
Hallo Carsten,

das Hochladen hat geklappt. Ich schaue mir das mal an und melde mich wieder.

Gruß

M.O.
0 Punkte
Beantwortet von m-o Profi (22.7k Punkte)

Hallo Carsten,

das folgende Makro gehört in ein Standardmodul deiner Arbeitsmappe:

Sub sortieren()

Dim lngLetzte As Long
Dim varArtikelnr As Variant
Dim lngZeile As Long
Dim lngStart As Long
Dim bFarbe As Boolean

'Bildschirmaktualisierung ausschalten:
Application.ScreenUpdating = False

With ActiveSheet
   'letzte beschriebene Zeile ermitteln
   lngLetzte = .UsedRange.SpecialCells(xlCellTypeLastCell).Row

   'Daten sortieren
   .Sort.SortFields.Clear
   .Sort.SortFields.Add Key:=.Range("B2:B" & lngLetzte), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortTextAsNumbers
   .Sort.SortFields.Add Key:=.Range("C2:C" & lngLetzte), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortTextAsNumbers
   With .Sort
        .SetRange Range("A1:H" & lngLetzte)
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
   End With

  'letzte beschriebene Zeile in Spalte B ermitteln
  lngLetzte = .Cells(Rows.Count, 2).End(xlUp).Row
 
 'Variable für Artikelnummer neuen Wert zuweisen
  varArtikelnr = .Cells(lngLetzte, 2)
 
  'Variable für Startzeile festlegen
  lngStart = lngLetzte
 
  'Artikelnummern ab Zeile 3 durchlaufen und Gruppen mit gleicher Artikelnummer bilden
  For lngZeile = lngLetzte To 1 Step -1
    'Prüfen, ob neue Artikelnummer vorliegt
    If Cells(lngZeile, 2) <> "" And Cells(lngZeile, 2).Value <> varArtikelnr Then
      'leere Zeile einfügen
      .Rows(lngZeile + 1).Insert
      'prüfen ob Bereich eingefärbt werden muss; abwechselnd färben und nicht färben
      If bFarbe = False Then
        'Zellen A bis H einfärben
        With .Range(.Cells(lngStart + 1, 1), Cells(lngZeile + 2, 8)).Interior
           .ThemeColor = xlThemeColorDark1
           .TintAndShade = -0.14996795556505
           .PatternTintAndShade = 0
        End With
    
        'Marker auf wahr setzen
        bFarbe = True
       Else
        bFarbe = False
      End If
         
      'Variable für Artikelnummer neuen Wert zuweisen
      varArtikelnr = .Cells(lngZeile, 2)
      'neue Startzeile festlegen
      lngStart = lngZeile
      
    End If
  Next lngZeile
End With

'Bildschirmaktualisierung einschalten:
Application.ScreenUpdating = True
    
End Sub


Gruß

M.O.

0 Punkte
Beantwortet von
Woooowwww !

Ist ja Genial ! Was mir diesen Forum schon geholfen hat !

Nochmals großes DAAAAAAANNNNKKKKKKEEEEEE !!!

Kure Abschließende Frage noch: Wie kann ich solche Makros dauerhaft in meine Lokale Excel Installation Impletieren ?
0 Punkte
Beantwortet von beverly_ Experte (3.3k Punkte)

Hi Carsten,

schreibe die Makros in die PERSONAL.xlsb. Falls du noch keine erstellt hast, dann zeichne einfach mit dem Makrorekorder irgendeine Aktion auf und gib unter "Speichern in:" Persönliche Makroarbeitsmappe an. Den aufgezeichneten Code kannst du ja wieder löschen.

Aufrufen kannst du deine Makros in der PERSONAL.xlsb im Register: Ansicht -> Befehlsgruppe: Makros. Du kannst den Makros auch Tastenkombinationen zuweisen.

Bis später, Karin

...