Zellen in Excel automatisch sortieren

Schönen Nachmittag,

ich habe eine Tabelle in Excel, die sich über A6:G29 erstreckt.
Sie sollte immer nach G6:G29 aufsteigend sortiert werden, sobald sich ein Wert zwischen G6 und G29 ändert (natürlich sollte jeweils eine gesamte Zeile verschoben werden :wink: ).

Kann mir jemand bitte helfen?

Vielen Dank!

Alexander

Sie sollte immer nach G6:G29 aufsteigend sortiert werden,
sobald sich ein Wert zwischen G6 und G29 ändert (natürlich
sollte jeweils eine gesamte Zeile verschoben werden :wink: ).

Entschuldigung, ich meinte, die Tabelle sollte ABSTEIGEND sortiert werden.

Danke!

Meinst Du so etwas… wurde schnell im Recorder augezeichnet. Müsstest denn Code noch säubern.

Private Sub Workbook\_SheetChange(ByVal Sh As Object, ByVal Target As Range)

If Not Intersect(ActiveCell, Range("G6:G29")) Is Nothing Then

Range("G6:G29").Select
 ActiveWorkbook.Worksheets("Tabelle1").Sort.SortFields.Clear
 ActiveWorkbook.Worksheets("Tabelle1").Sort.SortFields.Add Key:=Range("G6"), \_
 SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
 With ActiveWorkbook.Worksheets("Tabelle1").Sort
 .SetRange Range("A6:G29")
 .Header = xlNo
 .MatchCase = False
 .Orientation = xlTopToBottom
 .SortMethod = xlPinYin
 .Apply
 End With

 End If

End Sub

Gruss
Lanzma

Danke für deine Antwort!

So gut kenne ich mich nicht mit Excel aus, aber dieses Script muss ich im VBS-Editor (mit Alt + F11 öffnen) einfügen, richtig?
Wenn ich den Code eingebe, und auf „Speichern“ klicke, kommt eine Meldung, dass ich die Dabei als „Excel-Arbeitsmappe mit Makros“ abspeichern soll. Wenn ich das mache und die Datei öffne, hat sich aber nichts geändert.

Wie kann ich dieses Problem beheben?

Vielen Dank!

Alexander

Genau… Alt-F11 und dann auf der linken Seite auf „Diese Arbeitsmappe“ klicken, den Code einfügen und wieder schliessen.

Makros aktivieren !!

Hallo Lanzma2,

leider funktioniert das Sortieren noch immer nicht.
Jedoch: kann es sein, dass es deswegen nicht funktioniert, weil die Werte, nach denen die Tabelle sortiert werden sollte, in Wirklichkeit nur Formeln sind, von denen die oberste so aussieht:
=WENN(UND(E6=„Ja“;F6"0 mal");(((C6-B6)*$B$2)*F6)+$B$1;((C6-B6)*$B$2)+$B$1)

Vielen Dank!

Alexander

Es sollte eigentlich klappen, Du kannst ja Deine Mappe mal hochladen… so das man das Ganze mal anschauen kann.

Gruss

Gut, bevor ich mich aber dafür wo anmelden möchte, wollte ich nochmal so fragen:
Ich habe auf folgender Seite einen anderen Code gefunden:
http://www.office-loesung.de/ftopic9355_0_0_asc.php

Meine Tabelle hat sich nun etwas verändert:
Sie erstreckt sich über A6:F32.
Die Überschriften sind in A6:F6.
Sie sollte nach F7:F32 absteigend sortiert werden.

Würde dieser Code stimmen:

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim RaBereich As Range, RaZelle As Range
Set RaBereich = Range(„F7:F32“)
For Each RaZelle In Range(Target.Address)
If Not Intersect(Target, RaBereich) Is Nothing Then
Range(„A6:F32“).Sort Key1:=Range(„F7“), Order1:=xlDescending, _
Header:=xlGuess, OrderCustom:=1, MatchCase:=False, _
Orientation:=xlTopToBottom, DataOption1:=xlSortNormal
Exit For
End If
Next RaZelle
Set RaBereich = Nothing
End Sub

Vielen Dank!

Alexander

Also ich habe gerade einen anderen Code in dieser Datei probiert, der auch nicht funktioniert hat, während er in einer anderen Datei sehrwohl funktioniert!

An was kann das liegen?

Danke!

Also ich habe gerade einen anderen Code in dieser Datei
probiert, der auch nicht funktioniert hat, während er in einer
anderen Datei sehrwohl funktioniert!
An was kann das liegen?

Hallo Alexander,

nur damit ich es richtig verstehe, du hast einen unbekannten Code der in einer unbekannten Datei funktioniert und in einer anderen unbekannten Datei nicht funktioniert.?
Jetzt willst du wissen wodran das liegt.

Meinste wir haben eine Glaskugel?

Gruß
Reinhard

Also ich habe jetzt einfach folgendes Makro aufgenommen:

Sub Makro1()

ActiveWorkbook.Worksheets(„Tabelle1“).Sort.SortFields.Clear
ActiveWorkbook.Worksheets(„Tabelle1“).Sort.SortFields.Add Key:=Range(„F7“), _
SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets(„Tabelle1“).Sort
.SetRange Range(„A7:F32“)
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub

Was muss ich noch daran verändern, so dass das Makro immer wieder ausgeführt wird, wenn sich ein Wert irgendwo am Blatt ändert?
Die Werte in der Spalte, nach der die Tabelle sortiert wird, werden mit Wenn-Funktionen berechnet, die sich im Endeffekt auf A1:A4 beziehen, falls das hilft.

Vielen Dank!

Schönen Abend!

Ich wollte nur sagen, dass ich jetzt selber draufgekommen bin:

  1. Der Code lautet:

Private Sub Worksheet_Change(ByVal Target As Range)
ActiveWorkbook.Worksheets(„Tabelle1“).Sort.SortFields.Clear
ActiveWorkbook.Worksheets(„Tabelle1“).Sort.SortFields.Add Key:=Range(„F7“), _
SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets(„Tabelle1“).Sort
.SetRange Range(„A7:F100“)
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub

und 2) schrieb ich den Code immer in „Modul1“ rein, nicht in Tabelle1 :wink:

Trotzdem danke für eure Geduld!

Alexander

Was muss ich noch daran verändern, so dass das Makro immer
wieder ausgeführt wird, wenn sich ein Wert irgendwo am Blatt
ändert?

Probiers mal damit:

Private Sub Workbook\_SheetChange(ByVal Sh As Object, ByVal Target As Range)

Wichtig ist, dass es eine Change Bedingung ist und im Workbook eingetragen ist.

Gruss