Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1484to1488
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Sortierungsmakro erweitern

Sortierungsmakro erweitern
13.04.2016 14:20:20
Nino
Hallo liebe Gemeinde,
vor wenigen Wochen habe ich mit Eurer Hilfe und Geduld dieses Sortierungsmakro erstellt welches wunderbar läuft und schon sehr viel geleistet hat!
Jetzt möchte ich dies ein wenig optimieren und schon sehr viel dran rum gespielt! Hier ist einmal das original Makro!
Dieses Sortiert wenn Spalte "G(7)" und "I(9)" den selben Wert enthalten alle nachfolgenden Werte aus Spalte "P(19)" zusammen in Spalte "S(22)".
Bis dahin klappt es wunderbar da ich alles vor 2015 händisch raus gefiltert habe!
Nun möchte ich gerne den Zeitstempel, (ersten 4 Ziffern reichen aus Jahr;Monat) aus Spalte "A(1)" mit einbeziehen! Das Sortierungsmakro bleibt, aber nun soll dies zusätzlich unterschieden zwischen
>2015 Spalte "S(22)" wie gehabt
Sub zusammenfassen() If Range("S2").Value "" Then Exit Sub With ActiveSheet.Cells(1, 1).CurrentRegion .Sort key1:=.Cells(1, 7), order1:=xlAscending, _ key2:=.Cells(1, 9), order2:=xlAscending, Header:=xlYes With Range(.Cells(2, 19), .Cells(.Rows.Count, 19)) .FormulaR1C1 = "=Int(RC16)&IF(And(RC7=R[1]C7,RC9=R[1]C9),""; ""&R[1]C,"""")" .Formula = .Value End With .RemoveDuplicates Array(7, 9), xlYes End With End Sub Excel.Tabelle Userbild

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Sortierungsmakro erweitern
15.04.2016 13:14:07
Jürgen
Hallo Nino,
ich würde aus dem "with Range" eine "for next" Schleife machen.
statt:
With Range(.Cells(2, 19), .Cells(.Rows.Count, 19))
.FormulaR1C1 = "=Int(RC16)&IF(And(RC7=R[1]C7,RC9=R[1]C9),""; ""&R[1]C,"""")"
.Formula = .Value
End With
etwa so:
Dix lngRow as long
for lngrow = 2 to .rows.count
if left(range(cells(lngrow,1),cells(lngrow,1)).value,4)= year(now) then
range(cells(lngrow,19),cells(lngrow,19)).FormulaR1C1 = "=Int(RC16)&IF(And(RC7=R[1]C7, _
RC9=R[1]C9),""; ""&R[1]C,"""")"
else
range(cells(lngrow,20),cells(lngrow,20)).FormulaR1C1 = "=Int(RC15)&IF(And(RC6=R[1]C6, _
RC8=R[1]C8),""; ""&R[1]C,"""")"
end if
next lngrow
Durch den If-Clause wird direkt je nach Jahr in Spalte S oder T eingetragen.
Ob die FormulaR1C1 korrekt ist, möchte ich nicht behaupten! Die muss du ggf. im Else Bereich anpassen.
Dies ist ungetestet erstellt.
Gruß
Jürgen
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige