Sortierung einer Spalte innerhalb einer Tabelle ohne andere Spalten mit zu sortieren

  • Excel

Es gibt 76 Antworten in diesem Thema. Der letzte Beitrag () ist von cry.baby.

    Sortierung einer Spalte innerhalb einer Tabelle ohne andere Spalten mit zu sortieren

    Guten Tag,
    ich habe eine Datei mit verschiednen Artikel Nr. Spalte A, verschiedene Kunden Spalte B, verschieenen Serien Nr. Spalte C und Datum in Spalte d.
    Die kompl. Datei ist nach Datum & anschließend nach Artikel Nr. absteigend sortiert.
    Die Artikel Nr. können mehrfach vorkommen. Die SN: zu den Artikel Nr. aber nicht.
    Aktuell hat GV0587 die SN: Nr. 1, 2, 3; GV0588 die SN: Nr. 4 ,5, 6; und GV0598 die SN: Nr. 7, 8, 9
    Das soll auch genau so bleiben, allerdings möchte ich das die kleinste SN: zu einer Artikel Nr. immer am weitesten oben steht. Siehe Anhang Sollzustand.
    Denn innerhalb einer Artikel Nr. kann ich die SN: auch tauschen. Ich möchte das der Kunde der nach Datum weiter oben steht immer die kleinste SN: zu jedem Artikel erhält.
    Die Liste soll aber trotzdem immer mit prio 1 nach Datum und prio 2 nach Artikel Nr. absteigend sortiert bleiben.
    Manuell bekomme ich es hin indem ich zuerst die kompl. Liste nach Datum sortiere, dann einzeln jede Artikel Nr. über den Autofilter anzeigen lasse und dann nur Splalte B absteigend sortieren lasse.
    Die originale Datei hat aber mehrere hundert Artikel Nr. mit tausenden SN. Nr. Der Aufwand ist also zu groß um das händisch zu machen.

    Ich bekomme die Liste über folgende Sub nach Datum und Artikel Nr. sortiert, aber nicht noch die SN: Nr. zu jeder Artikel Nr. von klein nach groß.
    Ich hoffe Ihr könnt mir helfen.
    Vielen Dank
    Wolfgang


    Visual Basic-Quellcode

    1. Private Sub CommandButton1_Click()
    2. Dim SSp1 As String
    3. Dim SSp2 As String
    4. Dim Bereich As String
    5. Bereich = "A1:D10"
    6. SSp1 = "a"
    7. SSp2 = "d"
    8. ActiveSheet.Range(Bereich).Sort _
    9. Key1:=Range(SSp2 & "1"), Order1:=xlAscending, _
    10. Key2:=Range(SSp1 & "1"), Order2:=xlAscending, _
    11. Header:=xlGuess, MatchCase:=False, _
    12. Orientation:=xlTopToBottom
    13. End Sub


    Code-Tags eingefügt. ~Thunderbolt
    Dateien
    • Test.xlsx

      (14,95 kB, 260 mal heruntergeladen, zuletzt: )

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Thunderbolt“ ()

    Parawolli schrieb:


    Manuell bekomme ich es hin indem ich zuerst die kompl. Liste nach Datum sortiere, dann einzeln jede Artikel Nr. über den Autofilter anzeigen lasse und dann nur Splalte B absteigend sortieren lasse.
    Die originale Datei hat aber mehrere hundert Artikel Nr. mit tausenden SN. Nr. Der Aufwand ist also zu groß um das händisch zu machen.



    Wie genau sortierst Du die Tabelle händisch? Du schreibst, dass Du zunächst die Liste nach Datum sortierst -> aufsteigend oder absteigend? Ich habe es nämlich mal so probiert wie beschrieben, aber den Sollzustand laut Deiner Excel-Datei erreiche ich damit nicht.

    petaod schrieb:

    Dann füg doch einfach noch einen Key3 für die Spalte C ein.


    Das hatte ich bereits gemacht, aber funktioniert natürlich nicht, weil dabei immer alle Spalten sortiert werden. Ich will aber wie geschrieben nur die SN: separat noch einmal für jede Artikel Nr. sortieren. Der Filter erkennt ja dann auch nicht, das immer 3 Seriennummern-Gruppen zu einer Artikel Nr. gehört. Das ist ja genau das Problem. Nur SN: Nr. 1, 2, 3, gehört zu GV0587 und dürfen nicht zu GV0588 oder GV0598 zugeordnet werden.

    cry.baby schrieb:

    Parawolli schrieb:


    Manuell bekomme ich es hin indem ich zuerst die kompl. Liste nach Datum sortiere, dann einzeln jede Artikel Nr. über den Autofilter anzeigen lasse und dann nur Splalte B absteigend sortieren lasse.
    Die originale Datei hat aber mehrere hundert Artikel Nr. mit tausenden SN. Nr. Der Aufwand ist also zu groß um das händisch zu machen.



    Wie genau sortierst Du die Tabelle händisch? Du schreibst, dass Du zunächst die Liste nach Datum sortierst -> aufsteigend oder absteigend? Ich habe es nämlich mal so probiert wie beschrieben, aber den Sollzustand laut Deiner Excel-Datei erreiche ich damit nicht.


    Hi cry.baby
    kann leider erst heute Antworten, weil ich gestern nur einen Beitrag als newbi schreiben konnte.

    Also zunächst markiere ich den kompl. oberen Block. Anschließend über den Reiter Daten auf Sortieren klicken. Im neuen Fenster sortiere ich in der ersten Ebene nach Datum absteigend und mit Ebene 2 nach Artikel Nr. aufsteigend. (Siehe Bild 1) Das habe ich bereits mit dem Makro weiter oben auch gelöst.
    Danach sortiere ich über den Autofilter in Spalte A nach der ersten Artikel Nr. z.B. GV0587 Anschließend markiere ich die drei SN: Nr. in Spalte C und sortiere diese mit bestehender Markierung nach Größe aufsteigend. (Siehe Bild 2 & 3)
    Wichtig ist hier mit bestehnder Markierung zu sortieren, damit die anderen Spalten nicht mitsortiert werden.
    Diesen Schritt musst Du für die anderen beiden Artikel Nr. GV0588 & GV0598 wiederholen.
    Dann erhältst Du das Ergebnis im unteren Block.
    Hierfür bräuchte ich ein Makro, da der Aufwand wie bereits erwähnt händisch zu groß ist.
    Ich hoffe ich habe es verständlich erklärt.
    Wolfgang
    Bilder
    • Sortieren 1.jpg

      217,5 kB, 1.289×372, 216 mal angesehen
    • Sortieren 2.jpg

      155,54 kB, 1.096×264, 136 mal angesehen
    • Sortieren 3.jpg

      200,83 kB, 1.284×348, 218 mal angesehen
    Versuch es mal mit folgendem Code. Ich habe eigentlich nur die von Dir beschriebenen Arbeitsschritte mit dem Makro-Rekorder aufgenommen und dynamisch angepasst -> Cells(rows.count, 1).end(xlup).row für die jeweils zu sortierende Range. Die Tabelle mit dem Soll-Zustand darf hierfür allerdings nicht unter der zu sortierend Tabelle stehen.

    Zudem musst Du eine For next-Schleife für die Artikel-Nummern einbauen. In dem unten aufgeführten Code sind jetzt exemplarisch nur 587/588/598 sortiert worden.

    Visual Basic-Quellcode

    1. Sub SpaltenSortieren()
    2. Dim WksTabelle1 As Worksheet
    3. Set WksTabelle1 = Worksheets("Tabelle1")
    4. WksTabelle1.Sort.SortFields.Clear
    5. WksTabelle1.Sort.SortFields.Add Key:=Range("D2:D" & Cells(Rows.Count, 1).End(xlUp).Row _
    6. ), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    7. WksTabelle1.Sort.SortFields.Add Key:=Range("A2:A" & Cells(Rows.Count, 1).End(xlUp).Row _
    8. ), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    9. With WksTabelle1.Sort
    10. .SetRange Range("A2:D" & Cells(Rows.Count, 1).End(xlUp).Row)
    11. .Header = xlGuess
    12. .MatchCase = False
    13. .Orientation = xlTopToBottom
    14. .SortMethod = xlPinYin
    15. .Apply
    16. End With
    17. 'Nach GV0587 aufsteigend sortieren
    18. ActiveSheet.Range("A1:D" & Cells(Rows.Count, 1).End(xlUp).Row).AutoFilter Field:=1, Criteria1:="GV0587"
    19. WksTabelle1.Sort.SortFields.Clear
    20. WksTabelle1.Sort.SortFields.Add Key:=Range("C2:C" & Cells(Rows.Count, 1).End(xlUp).Row) _
    21. , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    22. With WksTabelle1.Sort
    23. .SetRange Range("C2:C" & Cells(Rows.Count, 1).End(xlUp).Row)
    24. .Header = xlGuess
    25. .MatchCase = False
    26. .Orientation = xlTopToBottom
    27. .SortMethod = xlPinYin
    28. .Apply
    29. End With
    30. 'Nach GV0588 aufsteigend sortieren
    31. ActiveSheet.Range("A1:D" & Cells(Rows.Count, 1).End(xlUp).Row).AutoFilter Field:=1, Criteria1:="GV0588"
    32. WksTabelle1.Sort.SortFields.Clear
    33. WksTabelle1.Sort.SortFields.Add Key:=Range("C3:C" & Cells(Rows.Count, 1).End(xlUp).Row) _
    34. , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    35. With WksTabelle1.Sort
    36. .SetRange Range("C3:C" & Cells(Rows.Count, 1).End(xlUp).Row)
    37. .Header = xlGuess
    38. .MatchCase = False
    39. .Orientation = xlTopToBottom
    40. .SortMethod = xlPinYin
    41. .Apply
    42. End With
    43. 'Nach GV0598 aufsteigend sortieren
    44. ActiveSheet.Range("A1:D" & Cells(Rows.Count, 1).End(xlUp).Row).AutoFilter Field:=1, Criteria1:="GV0598"
    45. WksTabelle1.Sort.SortFields.Clear
    46. WksTabelle1.Sort.SortFields.Add Key:=Range("C4:C" & Cells(Rows.Count, 1).End(xlUp).Row _
    47. ), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    48. With WksTabelle1.Sort
    49. .SetRange Range("C4:C" & Cells(Rows.Count, 1).End(xlUp).Row)
    50. .Header = xlGuess
    51. .MatchCase = False
    52. .Orientation = xlTopToBottom
    53. .SortMethod = xlPinYin
    54. .Apply
    55. End With
    56. End Sub


    Das heißt mit der for next - Schleife sieht das dann wie folgt aus. Du musst hier nur die Range der Serien-Nummern angeben (von bis in Zeile 23):

    Visual Basic-Quellcode

    1. Dim WksTabelle1 As Worksheet
    2. Dim i As Long
    3. Set WksTabelle1 = Worksheets("Tabelle1")
    4. WksTabelle1.Sort.SortFields.Clear
    5. WksTabelle1.Sort.SortFields.Add Key:=Range("D2:D" & Cells(Rows.Count, 1).End(xlUp).Row _
    6. ), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    7. WksTabelle1.Sort.SortFields.Add Key:=Range("A2:A" & Cells(Rows.Count, 1).End(xlUp).Row _
    8. ), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    9. With WksTabelle1.Sort
    10. .SetRange Range("A2:D" & Cells(Rows.Count, 1).End(xlUp).Row)
    11. .Header = xlGuess
    12. .MatchCase = False
    13. .Orientation = xlTopToBottom
    14. .SortMethod = xlPinYin
    15. .Apply
    16. End With
    17. For i = 587 To 598
    18. ActiveSheet.Range("A1:D" & Cells(Rows.Count, 1).End(xlUp).Row).AutoFilter Field:=1, Criteria1:="GV0" & i
    19. WksTabelle1.Sort.SortFields.Clear
    20. WksTabelle1.Sort.SortFields.Add Key:=Range("C2:C" & Cells(Rows.Count, 1).End(xlUp).Row) _
    21. , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    22. With WksTabelle1.Sort
    23. .SetRange Range("C2:C" & Cells(Rows.Count, 1).End(xlUp).Row)
    24. .Header = xlGuess
    25. .MatchCase = False
    26. .Orientation = xlTopToBottom
    27. .SortMethod = xlPinYin
    28. .Apply
    29. End With
    30. Next i
    31. End Sub

    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „cry.baby“ ()

    Anzahl von Cellen mit bestimmten Werten farblich markieren

    Hallo cry.baby,
    ich brauche leider noch einmal Deine Hilfe. Habe jetzt schon ein paar Tage versucht es alleine hin zu bekommen, aber das ist für mich zu schwer.
    Wenn die Artikel Nr. in "Tabelle1" Spalte B mit der Artikel Nr. in "Tabelle2" Spalte A übereinstimmt, möchte ich die Anzahl & Farbe an Cellen in "Tabelle1" Spalte A genau in der Häufigkeit & Farbe markieren, wie es in "Tabelle2" Spalte B steht. Wenn Artikel Nr. mehrmals vor kommen, dann soll zuerst die Anzahl der ersten Übereinstimmung der Farbe genommen werden und bei der zweiten Übereinstimmung die Anzahl und Farbe von dieser Farbe.
    Den ersten Teil mit dem Artikel Nr. vergleich habe ich hin bekommen. Beim zweiten Teil habe ich versucht mit Schleifen zu arbeiten, aber die Bedingung der Schleife ändert sich ja ständig...
    In "Tabelle1" Spalte E & F habe ich das Ergebnis mal sichtbar gemacht.
    Vielen Dank im Vorraus
    Wolfgang

    Vollzitat entfernt. ~Thunderbolt
    Dateien
    • Test.xlsx

      (11,75 kB, 223 mal heruntergeladen, zuletzt: )

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Thunderbolt“ ()

    Hi,
    ich habe bereits in Tabelle1 Spalte E & F händisch eingefärbt. Das soll nur das Endresultat sein. Spalte A & B soll über das Makro automatisch von Tabelle2 die Farben in den entsprechenden Stückzahlen dort rein kopieren.
    Du hast Recht in Tabelle 2 wiederholen sich die Artikel Nr. Das ist auch Richtig so und genau meine Schwierigkeit.
    Hintergrund: In Tabelle2 Spalte B stehen die Stückzahlen der geplanten Aufträge zum Bau einer GV0598, GV0587, GV0588. Wir bauen bei uns in Baulosen. Bedeutet ich plane in der Regel mehrere Aufträge zu gleichen Artikel Nr. mehrmals ein. Mal ein 2er Los mal ein 3er oder 4er Los. In Tabelle 1 möchte ich einen Überblick der Gesamtplanung sehen können. Also wie weit ich mit meinen ganzen geplanten Aufträgen komme.
    Hoffe ich habe das verständlich rüber gebracht. Ansonsten bitte nochmal nachfragen.
    Lg Wolfgang

    Vollzitat entfernt. ~Thunderbolt

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Thunderbolt“ ()

    Hi Wolfgang,

    beim nächsten Mal muss ich aber Gage verlangen. :P

    Der nachfolgende Code funktioniert dynamsich, d.h. wenn Du die Stückzahl in Tabelle2 änderst, wird auch die Tabelle1 entsprechend diesen Stückzahlen eingefärbt.

    Visual Basic-Quellcode

    1. Option Explicit
    2. Sub Einfaerben()
    3. Const Blau = 15773696 'RGB(0, 176, 240)
    4. Const Lila = 10498169 'RGB(121, 48, 160)
    5. Const Gelb = 65535 'RGB(255, 255, 0)
    6. Const Grün = 5287936 'RGB(0,176,80)
    7. Const Rot = 255 'RGB(255,0,0)
    8. Const Orange = 52479 'RGB(255,204,0)
    9. Dim AnzahlGV0598_blau, AnzahlGV0587_lila, AnzahlGV0588_gelb, AnzahlGV0598_grün, AnzahlGV0587_rot, AnzahlGV0588_orange As Integer
    10. Dim r As Range
    11. Dim GezähltGV0598, GezähltGV0587, GezähltGV0588 As Integer
    12. With Sheets("Tabelle2")
    13. AnzahlGV0598_blau = .Range("B2")
    14. AnzahlGV0587_lila = .Range("B3")
    15. AnzahlGV0588_gelb = .Range("B4")
    16. AnzahlGV0598_grün = .Range("B5")
    17. AnzahlGV0587_rot = .Range("B6")
    18. AnzahlGV0588_orange = .Range("B7")
    19. End With
    20. With Sheets("Tabelle1")
    21. 'Für GV0598_blau
    22. GezähltGV0598 = 0
    23. For Each r In Intersect(.UsedRange, .Range("B:B"))
    24. If r = "GV0598" And GezähltGV0598 < AnzahlGV0598_blau Then
    25. GezähltGV0598 = GezähltGV0598 + r.Count
    26. r.Offset(0, -1).Interior.Color = Blau
    27. End If
    28. Next r
    29. 'Für GV0587_lila
    30. GezähltGV0587 = 0
    31. For Each r In Intersect(.UsedRange, .Range("B:B"))
    32. If r = "GV0587" And GezähltGV0587 < AnzahlGV0587_lila Then
    33. GezähltGV0587 = GezähltGV0587 + r.Count
    34. r.Offset(0, -1).Interior.Color = Lila
    35. End If
    36. Next r
    37. 'Für GV0588_gelb
    38. GezähltGV0588 = 0
    39. For Each r In Intersect(.UsedRange, .Range("B:B"))
    40. If r = "GV0588" And GezähltGV0588 < AnzahlGV0588_gelb Then
    41. GezähltGV0588 = GezähltGV0588 + r.Count
    42. r.Offset(0, -1).Interior.Color = Gelb
    43. End If
    44. Next r
    45. 'Für GV0598_grün
    46. GezähltGV0598 = 0
    47. For Each r In Intersect(.UsedRange, .Range("B:B"))
    48. If r = "GV0598" Then
    49. GezähltGV0598 = GezähltGV0598 + r.Count
    50. If r = "GV0598" And GezähltGV0598 > AnzahlGV0598_blau And GezähltGV0598 <= AnzahlGV0598_blau + AnzahlGV0598_grün Then
    51. r.Offset(0, -1).Interior.Color = Grün
    52. End If
    53. End If
    54. Next r
    55. 'Für GV0587_rot
    56. GezähltGV0587 = 0
    57. For Each r In Intersect(.UsedRange, .Range("B:B"))
    58. If r = "GV0587" Then
    59. GezähltGV0587 = GezähltGV0587 + r.Count
    60. If r = "GV0587" And GezähltGV0587 > AnzahlGV0587_lila And GezähltGV0587 <= AnzahlGV0587_lila + AnzahlGV0587_rot Then
    61. r.Offset(0, -1).Interior.Color = Rot
    62. End If
    63. End If
    64. Next r
    65. 'Für GV0588_orange
    66. GezähltGV0588 = 0
    67. For Each r In Intersect(.UsedRange, .Range("B:B"))
    68. If r = "GV0588" Then
    69. GezähltGV0588 = GezähltGV0588 + r.Count
    70. If r = "GV0588" And GezähltGV0588 > AnzahlGV0588_gelb And GezähltGV0588 <= AnzahlGV0588_gelb + AnzahlGV0588_orange Then
    71. r.Offset(0, -1).Interior.Color = Orange
    72. End If
    73. End If
    74. Next r
    75. End With
    76. End Sub

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „cry.baby“ ()

    Hallo cry.baby,
    erst einmal vielen vielen Dank. Der Code funktioniert.
    Ich hatte aber vergessen zu erwähnen, das ich eine freie Farbauswahl benötige. Aktuell sind die Farben fest mit den Artikel Nr. verknüpft.
    Was muss ich umprogrammieren, damit ich die Farben frei wählen kann?
    Problem ist, das ich 71 verschiedene Artikel Nr. habe (Siehe unten) und es schwierig ist, so viele unterschiedliche Farben zu finden und zu vergeben.
    Ich stelle mir das so vor, das er von Tabelle2 Spalte B die Farben einfach übernimmt, die dort vergegeben sind.
    Wenn es nicht möglich sein sollte, dann würde ich eine feste Farbvorwahl vergeben, an die man sich halten muss. Damit könnte ich leben.
    Wenn es aber möglich wäre die farben frei zu wählen, dann würde ich das vorziehen.
    Lg Wolfgang
    P.S. Gage hast Du Dir wirklich verdient.

    GV0585 GV0586 GV0589 GV0590 GV0594 GV0595 GV0600 GV0601 GV0587 GV0588 GV0591 GV0592 GV0598 GV0599 GV0665 GV0596 GV0597 GV0653 GV0654 GV0345 GV0679 GV0745 GV0744 GV0705 GV0709 GV0706 GV0710 GV0707 GV0711 GV0708 GV0712 GV0763 GV0838 GV0829 GV0850 GV0372 GV0373 GV0374 GV0375 GV0739 GV0740 GV0400 GV0399 GV0401 GV0496 GV0192 GV0193 GV0402 GV0189 GV0668 GV0669 GV0378 GV0188 GV0655 GV0656 GV0606 GV0607 GV0700 GV0773 GV0701 GV0774 GV0702 GV0703 GV0742 GV0851 GV0852 GV0738 GV0767 GV0828 GV0621 BG1090

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Parawolli“ ()

    Hi Wolfgang,

    puuuh, das wird knifflig. Insbesondere die Anzahl an GVs. Man könnte natürlich für jede GV eine Schleife hinzufügen und auch eine feste Farbnummer zuweisen (das ist nich schwierig, weil man einen Farbindex fortlaufend vergeben könnte) aber dann dürfen sich die GVs nicht verändern. Bleiben die denn immer gleich? Wenn nicht, müsste man noch eine Dynamik einbauen und spätestens dann bekommt man nen Knoten ins Hirn. 8|
    Hi cry.baby
    Die GV Nr. ändern sich nie, aber die Reihenfolge in der diese in Tabelle 2 stehen schon, denn die Abarbeitung der Aufträge kann sich jederzeit ändern.
    Mir ist aufgefallen, das Du davon ausgegangen bist, das GV0598 immer ganz oben auf B2 steht. Das muss aber nicht sein.
    Lg Wolfgang


    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Parawolli“ ()

    Kein Problem Du hast mir sowieso schon sehr viel geholfen.
    Dann werde ich feste Farben vergeben.
    Das einzige was ich noch versuchen muss zu ändern ist die Tatsache, das GV0598 nicht unbedingt auf B2 in Tabelle2 stehen muss und die anderen GV Nummern natürlich entsprechend auch woanders.
    Ich versuche es mal alleine hin zu bekommen. Wenn nicht melde ich mich nochmal :D
    Danke und Lg Wolfgang
    Hi Wolfgang,

    wenn Du jeder GV eine feste Farbe bzw. Farbnummer zuweist, dann kannst Du die Zeilen 16 bis 25 im obigen Code löschen und wie nachfolgend ersetzen. Das Problem ist nämlich, dass VBA nur insgesamt 56 Farbindexe vorsieht. Bei Nr. 56 Deiner GVs kommt es dann zu einer Fehlermeldung in der Schleife. Hab ich bis dato auch nicht gewußt...

    Kurze Erklärung; in Tabelle2 Spalte D erstellt er eine Hilfsspalte mit den Farbnummern und sucht anschließend nach der Farbnummer, um Dir dann die Stückzahl zwei Spalten links-> offset(0,-2) in die Variable zu packen.

    Du müsstest das aber für alle restlichen Farben forführen (insgesamt 142?) und auch jeweils eine for each - Schleife schreiben, damit sie richtig und entsprechend der angegebenen Stückzahl eingefärbt werden. Müssten dann weitere 142 Schleifen sein. 8|

    Visual Basic-Quellcode

    1. [vb]Dim Finden As Variant
    2. Dim RangeFinden As Range
    3. 'Hilfsspalte D mit Farbnummern erstellen
    4. With Sheets("Tabelle2")
    5. For Each r In Intersect(.UsedRange, .Range("B:B"))
    6. r.Offset(0, 2) = r.Interior.Color
    7. Next r
    8. End With
    9. 'Anschließend die Stückzahl zur jeweiligen GV dynamisch ermitteln
    10. Sheets("Tabelle2").Activate
    11. Set RangeFinden = Range("D2", Range("D2").End(xlDown))
    12. Finden = RangeFinden.Find(Blau).Offset(0, -2)
    13. AnzahlGV0598_blau = Finden
    14. Finden = RangeFinden.Find(Lila).Offset(0, -2)
    15. AnzahlGV0587_lila = Finden
    16. Finden = RangeFinden.Find(Gelb).Offset(0, -2)
    17. AnzahlGV0588_gelb = Finden
    18. Finden = RangeFinden.Find(Grün).Offset(0, -2)
    19. AnzahlGV0598_grün = Finden
    20. Finden = RangeFinden.Find(Rot).Offset(0, -2)
    21. AnzahlGV0587_rot = Finden
    22. Finden = RangeFinden.Find(Orange).Offset(0, -2)
    23. AnzahlGV0588_orange = Finden
    [/vb]

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „cry.baby“ ()

    Hi cry.baby
    Boah kann ich nur sagen und mal wieder nur Danke.
    Habe Den kompl. Code wie Du geschrieben hast in die Zeilen 16 bis 25 im alten Code ersetzt und gestartet.
    Er legt mir in Tabelle 2 Spalte D die Farb Nr. an wie Du geschrieben hast. Allerdings bleibt das Makro dann in Zeile 19 vom neuen Code hängen. Er markiert die Zeile Gelb und gibt im Fehlerfenster folgendes aus.
    Laufzeitfehler '91':
    Objektvariable oder With-Blockvariable nicht festgelegt.
    Habe ich etwas falsch gemacht?

    P.S. Mit den Farben käme ich übrigens hin, weil die originale Auftrags-Tabelle (Tabelle2) aus 2 Blättern besteht, weil die 71 GV Nr. in 2 Gruppen unterteilt sind.
    Bedeutet ich könnte die Farben doppelt belegen. In jedem Blatt könnte es z.B. die Farbe rot geben. Oder würde das Makro dann nicht funktionieren wenn ich doppelt vergebe?
    Lg Wolfgang

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Parawolli“ ()

    Die Konstante für Lila in Zeile 6 (Const lila) ist falsch angegeben. Es müsste heißen 10498160 und nicht 9 am Ende. Dann sollte der Code funktionieren.

    Wenn Du eine Farbe doppelt vergibst, dann funktioniert der Code leider nicht mehr, weil er das als Referenz für die Suche benötigt, um die passende Stückzahl zu ermitteln.