Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1296to1300
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

VBA - nur Zellinhalt (nicht Zellfarbe) sortieren

VBA - nur Zellinhalt (nicht Zellfarbe) sortieren
26.01.2013 23:32:25
Special-K
Hello zusammen!!
Ich habe, ohne VBA vorher gekannt zu haben, angefangen mir einen Code zu schreiben/aus foren zusammenzuwürfen/mit logischem denken kopierte codes verändert.
(Soll heißen, ich bin ein Newb, solangs ansatzweise kompliziert wird, bitte Hintergrund erklären...Wobei ich ja immer noch fragen kann.)
Hat bisher gut geklappt. Der Code verarbeitet eingefügte Daten und trägt/ändert entsprechend Daten in eine andere Tabelle ein....Diese wird dann automatisch nach einer neuen Eintragung sortiert mittels:
Private Sub sort()
Range("G4:da1000").Select
ActiveWorkbook.Worksheets("Auktion").sort.SortFields.Clear
ActiveWorkbook.Worksheets("Auktion").sort.SortFields.Add Key:=Range("H5") _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("Auktion").sort.SortFields.Add Key:=Range("K5") _
, SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("Auktion").sort.SortFields.Add Key:=Range("L5") _
, SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("Auktion").sort.SortFields.Add Key:=Range("N5") _
, SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Auktion").sort
.SetRange Range("G4")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub
(Code von "Makro aufzeichnen", und abgeändert)
Mein Problem: der sortiert die vorher formatierten Zellfarben mit.
Bisher habe ich immer lang genug gesucht/nachgedacht, bis ich Lösungen für meine Probleme hatte. Ich habe aber jetz, nach zu langem Suchen (über ne Std.) noch immer nichts gefunden, was die Sort-Funktion nur den Inhalt sortieren lässt, oder in einem bestimmten Bereich die Formatierung festsetzt.
Danke im Vorraus

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA - nur Zellinhalt (nicht Zellfarbe) sortieren
27.01.2013 05:04:07
DirkR
Hallo Special-K,
anbei mal eine Idee von mir.

Die Datei https://www.herber.de/bbs/user/83599.xls wurde aus Datenschutzgründen gelöscht


In dem Beispie kopiere ich erst die Inhalte von Spalte A in Spalte B.
Dann sortiere ich Spalte B und anschließend kopiere ich die sortierten Daten aus Spalte B wieder zurück in Spalte A. Damit bleibt die Formatierung in Spalte A erhalten.
Hilft dir das weiter?
Dies geht natürlich auch mit mehreren Spalten.
Etwas Besseres fällt mir leider nicht ein.
Gruß Dirk

Anzeige
AW: VBA - nur Zellinhalt (nicht Zellfarbe) sortieren
27.01.2013 14:48:51
Special-K
Hey Dirk,
besten Dank schonmal!! Ich hatte gehofft, es gibt eine einfachere Lösung, dass der Prozessor weniger belastet wird, aber hab mir nach meiner langen ergebnislösen schon gedacht, dass es auf so einem Wege sein muss. Dein Code ist schonmal sehr hilfreich. Ich hab es versucht für meine Zwecke umzuschreiben, bin mir aber sehr unsicher. Hier nochmal dein Code:
Private Sub CommandButton1_Click()
Dim I As Integer
'Inhalte von Spalte A in Spalte B kopieren
For I = 1 To Cells(Rows.Count, 1).End(xlUp).Row
Cells(I, 2).Value = Cells(I, 1).Value
Next I
'Spalte B Sortieren
Range(Cells(1, 2), Cells(I, 2)).Sort _
Key1:=Range("B1"), Order1:=xlAscending, Header:=xlNo, OrderCustom:=1, _
MatchCase:=False, Orientation:=xlTopToBottom
'Inhalte Spalte A löschen
Range(Cells(1, 1), Cells(Cells(Rows.Count, 1).End(xlUp).Row, 1)).ClearContents
'Inhalten von Spalte B in Spalte A kopieren
For I = 1 To Cells(Rows.Count, 2).End(xlUp).Row
Cells(I, 1).Value = Cells(I, 2).Value
Next I
'Inhalte Spalte B löschen
Range(Cells(1, 2), Cells(Cells(Rows.Count, 2).End(xlUp).Row, 2)).ClearContents
End Sub
Das ganze ist ja jetzt nur für Spalte A/B ausgelegt. Ich habe das Probleme, das ganze für eine Tabelle umzuschreiben.
Was sortiert werden soll:
von Cells(7 , 4) [G4] bis Cells(500 , letzte beschriebene zelle in G4)
[500, damit genug spalten einbezogen werden]
Das ganze am besten in Cells(7 , 1004) einfügen, sortieren,.....Wobei ich das wahrscheinlich dann selber passend umschreiben kann.

Anzeige
AW: VBA - nur Zellinhalt (nicht Zellfarbe) sortieren
27.01.2013 17:06:34
DirkR
Hallo Special-K,
mir fällt leider nur dieser Weg ein!?!
Vielleicht gibt es noch einen eleganteren Weg!?!?
Wäre es dir möglich deine Mappe hoch zu laden. Dann könnte ich dir besser helfen.
Gruß Dirk

AW: VBA - nur Zellinhalt (nicht Zellfarbe) sortieren
27.01.2013 18:00:36
DirkR
Hallo Special-K,
ich habe noch etwas gebastelt!!!
https://www.herber.de/bbs/user/83606.xls
In der Beispielmappe werden die Spalten G,H,I ab Zeile 4 Kopiert, ab Zeile 1004 eingefügt, dann sortiert und anschließend wieder ab Zelle G4 wieder sortiert eingefügt.
Dabei sortiert er Spalte G absteigend, dann Spalte H absteigend und Spalte I absteigend.
Das hat den Vorteil, dass man bei gleichen Werten in der Spalte (z. B.: Namensgleichheit) danach in der nächsten Spalte weiter nach Namen und danach nach Geb.Grußm Datum sortiert.
Gruß Dirk

Anzeige
AW: VBA - nur Zellinhalt (nicht Zellfarbe) sortieren
27.01.2013 21:27:08
Special-K
Super Dirk, sehr nett, dass du dich ohne Aufforderung nochmal drangesetzt hast. Habs minimal nach meinen Bedürfnissen umschreiben müssen und funktioniert einwandfrei :)
Falls Nachleser mein Code noch interessiert:
Private Sub sort()
Sheets("Auktion").Select
Range(Cells(4, 7), Cells(Cells(Rows.Count, 7).End(xlUp).Row, 1000)).Copy
Cells(1004, 7).PasteSpecial Paste:=xlValues
Selection.sort _
Key1:=Range("h1005"), Order1:=xlAscending, _
Key2:=Range("K1005"), Order1:=xlDescending, _
Key3:=Range("L1005"), Order1:=xlDescending, _
Key3:=Range("N1005"), Order1:=xlDescending, _
Header:=xlYes, OrderCustom:=1, _
MatchCase:=False, Orientation:=xlTopToBottom
Range("G4:sf1000").ClearContents
Selection.Copy
Cells(4, 7).PasteSpecial Paste:=xlValues
Range("G1004:sf2000").ClearContents
End Sub
Spalte SF (bzw. 500ste Spalte), weil sich automatisch werte anfügen können und das je nach dem etwas mehr werden kann und ich sicher gehen will.
Noch mal vielen Dank für die Mühe :)

Anzeige
AW: VBA - nur Zellinhalt (nicht Zellfarbe) sortieren
27.01.2013 21:27:56
Special-K
Super Dirk, sehr nett, dass du dich ohne Aufforderung nochmal drangesetzt hast. Habs minimal nach meinen Bedürfnissen umschreiben müssen und funktioniert einwandfrei :)
Falls Nachleser mein Code noch interessiert:
Private Sub sort()
Range(Cells(4, 7), Cells(Cells(Rows.Count, 7).End(xlUp).Row, 1000)).Copy
Cells(1004, 7).PasteSpecial Paste:=xlValues
Selection.sort _
Key1:=Range("h1005"), Order1:=xlAscending, _
Key2:=Range("K1005"), Order1:=xlDescending, _
Key3:=Range("L1005"), Order1:=xlDescending, _
Key3:=Range("N1005"), Order1:=xlDescending, _
Header:=xlYes, OrderCustom:=1, _
MatchCase:=False, Orientation:=xlTopToBottom
Range("G4:sf1000").ClearContents
Selection.Copy
Cells(4, 7).PasteSpecial Paste:=xlValues
Range("G1004:sf2000").ClearContents
End Sub
Spalte SF (bzw. 500ste Spalte), weil sich automatisch werte anfügen können und das je nach dem etwas mehr werden kann und ich sicher gehen will.
Noch mal vielen Dank für die Mühe :)
Anzeige

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige