HERBERS Excel-Forum - das Archiv
Sortierung mit Matrixformel
maxi

Hab zwei Datenfelder (A8:D451 und F8:I451) in einer Tabelle und will beide jeweils sortieren.
Anhand der Höhe des Betrags in Spalte D (und auch Spalte I dann), sollen die Zellen A-D (und auch F-I)
von oben nach unten absteigend angeordnet werden.
Wie kriege ich das in einer Matrixformel unter?
Bin natürlich für sonstige Lösungsvorschläge offen.

AW: Sortierung mit Matrixformel
Harald

Hallo Maxi,
Markiere den Bereich A8:I451 und gehe in das Menü Daten - Sortieren nach Spalte D aufsteigend.
Gruß Harald

AW: Sortierung mit Matrixformel
maxi

Die Sache ist halt die: wenn ich sortiere nach der Funktionsleiste, verschiebt es mir einzig und allein die Zellen (Beträge) in Spalte D nicht jedoch die zugehörigen Zellen in Spalten A-C (Bezeichnung, Eigenschaft und Menge).
Dafür eine Lösung zu finden wäre super, vielleicht kann man die Zellen irgendwie gruppieren.
Besser sogar wäre eine automatische übernahme bei Änderung der Beträge in Spalte D, also ohne manuelle Funktionsbetätigung.
Danke trotzdem für die Hilfe
PS: könnte mir was mit Large Funktion vorstellen

AW: Sortierung mit Matrixformel
Harald

Hallo Maxi,
verstehe ich nicht. Wenn Du alle Zellen des zu sortierenden bereiches markierst, dann nach Spalte D sortierst, dann werden alle Zeilen umsortiert, auch die in den anderen markierten Spalten. Du kannnst beim Sortieren sogar angeben, dass Du erst nach Spalte D sortieren möchtest, anschließend nach Spalte I.
Verwende dazu evtl nicht das Sortiersymbol aus der Symbolleiste, sondern den befehl Daten - Sortieren aus der Menüöeiste.
Gruß Harald

AW: Sortierung mit Matrixformel
maxi

Sorry hab mich sehr schlecht ausgedrückt. Da die Felder einen Bezug haben zu Feldern in einer anderen Tabelle reagiert er eigentlich garnicht. D.h. wenn ich über Daten,Sortieren,nach Spalte D_absteigend vorgehe reagiert er nicht.
Sortierung findet garnicht statt, ansonsten stimmt deine Vorgehensweise(bei unverlinkten Feldern) schon.

AW: Sortierung mit Matrixformel
Harald

Hallo Maxi,
dann hilft wohl nur sortieren der Felder in den Quelltabellen.
Oder: Kopieren des Zellbereiches und Einfügen über "Inhalte Einfügen" als Werte, dann Sortierfunktion anwenden. Allerdings sind dann die Bezüge weg.
Gruß Harald

AW: Sortierung mit Matrixformel
maxi

Ok, habs raus wo der Fehler steckte war ein falsch kopierter Bereich.
Könnte ich vielleicht mit dem Makro recorder irgendwie meine schritte aufnehmen und dann wiedergeben lassen falls sich ein Betrag ändert?
D.h. wenn sich ein Betrag aus N8-N449 (oder S8-S449)ändert, markiere ich den Bereich K8:N449 (oder P8:S449) und sortiere absteigend nach Spalte N (oder aufsteigend nach Spalte S).

AW: Sortierung mit Matrixformel
Harald

Hallo Maxi,
zeichne Dein Macro zum Sortieren auf, z.B. mit dem Namen "Mein_Macro()".
Dann füge folgenden Code in die Codemappe des Arbeitsblattes ein (rechte Maustaste auf den Tab des Arbeitsblattes, dann Code anzeigen):


Private Sub Worksheet_Change(ByVal Target As Range)
Dim isect As Variant
Set isect = application.Intersect(Target, Range("N8:N449"))
If Not (isect Is Nothing) Then
Call Mein_Macro
End If
End Sub


Gruß Harald

AW: Sortierung mit Matrixformel
maxi

Da sich der Betrag in zwei Richtungen ändern kann, bräuchte ich diesen Makro 2 mal, also einmal falls der Betrag negativ wird P8:S449 sortieren und falls der Betrag positiv bleibt oder 0 wird soll K8:N449 sortiert werden aus

AW: Sortierung mit Matrixformel
Harald

Hallo Maxi,
Du benötigst entsprechend viele Sortiermacros, die Du einfach als Mein_Macro_1(), Meikn_Macro_2() etc. aufzeichnest.
Dann erweiterst Du die Worksheet_Change Routine entsprechend für verschiedene Bereiche und für verschiedene Bedingungen:


Private Sub Worksheet_Change(ByVal Target As Range)
Dim isect As Variant
Set isect = application.Intersect(Target, Range("N8:N449"))
If Not (isect Is Nothing) Then
if Cells(Target).Value > 0 then
Call Mein_Macro_1 'für positive Werte in der geänderten zelle
else
Call Mein_Macro_2 'für negative Werte in der geänderten zelle
End If
Set isect = application.Intersect(Target, Range("P8:P449"))
If Not (isect Is Nothing) Then
if Cells(Target).Value > 0 then
Call Mein_Macro_3 'für positive Werte in der geänderten zelle
else
Call Mein_Macro_4 'für negative Werte in der geänderten zelle
End If
End Sub


Und so weiter und so fort, Deiner Programmierphantasie für zusätzliche Abfragen oder Makroaufrufe sind keine Grenzen gesetzt.
Gruß Harald

AW: Sortierung mit Matrixformel
maxi

Mein Fehler, es müssen immer beide Bereiche sortiert werden, unabhängig davon in welchem Bereich sich was ändert d. h. ich müsste mit einem Makro auskommen der dann einsetzt,
wenn sich entweder in Spalte N oder Spalte S etwas ändert unabhängig davon ob der Betrag null, neg, pos wird oder sich nur vermindert oder vermehrt.
Vielen Dank aber für die ganzen Vorschläge, die waren eine riesen Hilfe soweit.

Hat dieser Thread was mit...
Luc:-?

...dem hier zu tun, Maxi?
Gruß Luc :-?

AW: Hat dieser Thread was mit...
maxi

Genau, bloß, dass ich das mit dem leere Zellen ausblenden zunächst ausgeklammert habe.

AW: Hat dieser Thread was mit...
maxi

Ich wollte mich nur noch mal bedanken Harald, das Ding funktioniert perfekt bis auf die erste Zeile.
Die erste Zeile bleibtkostant und lässt sich nicht sortieren obwohl ich bei der Aufnahme sie mit markiert habe.
Noch eine letzte hilfestellung wäre optimal

Habe komplettes FmlBsp fertig! Sortierung...
Luc:-?

...wie beschrieben, Maxi!
Bei Interesse melden (Anpassung musst du selber vornehmen)!
Gruß Luc :-?

Hier noch der Link zum...
Luc:-?

Formelbeispiel...
Gruß Luc :-?

AW: Hat dieser Thread was mit...
Harald

Hallo Maxi,
beim Sortieren darf _kein_ Häkchen bei "Datenbereich enthält Überschrift" links unten gemacjt sein. Sonst interpretiert Excel die erste Zeile als Überschrift, die es natürlich nicht einsortiert. Das ist so gewollt.
gruß Harald

AW: Hat dieser Thread was mit...
maxi

Jetzt funktioniert alles Super!
Vielen Dank euch beiden