Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Spalten B und C in Abhängigkeit von Spalte A sortieren

47 views
Skip to first unread message

Dirk Wunsch

unread,
Aug 20, 2006, 11:59:13 AM8/20/06
to
Hallo!

Ich habe folgendes Problem und komme nicht weiter.

In Spalte A sind die u. a. Werte in den Zeilen 1 - 5 enthalten. Die Zeilen
in den Spalten B und C sollen sortiert werden. Dabei soll im Ergebnis der
jeweilige Wert in Spalte A gleich dem Wert in Spalte B sein (siehe unten).
Die Reihenfolge in Spalte A kann sich auch immer wieder mal verändern, somit
müssten die Zeilen in den Spalten B und C immer wieder sortiert werden.

Ausgangsituation

A | B | C
-----------------------------
4 | 1 | ABC
3 | 2 | DEF
5 | 3 | GHI
1 | 4 | JKL
2 | 5 | MNO

Gewünschtes Ergebnis:

A | B | C
------------------------------
4 | 4 | JKL
3 | 3 | GHI
5 | 5 | MNO
1 | 1 | ABC
2 | 2 | DEF

Kann jemand helfen?

Grüße,
Dirk


Claus Busch

unread,
Aug 20, 2006, 12:06:00 PM8/20/06
to
Hallo Dirk,

das Problem bekommst du nicht mit Sortieren hin. Du musst deine Tabelle neu
aufbauen. Kopiere deine Spalte A nach Spalte E, schreibe in F1 =E1 und
kopiere es nach unten soweit wie gebraucht, in G1 schreibst du dann
=SVERWEIS(F1;$B$1:$C$5;2;0) und kopierst es herunter. Falls deine Tabelle
mehr als die 5 Zeilen hat, musst du den Bereich entsprechend anpassen.


--
Mit freundlichen Grüssen
Claus Busch

Win XP Prof SP2; Office 2000 SP3
claus_busch(at)t-online.de

Alexander Wolff

unread,
Aug 20, 2006, 12:16:55 PM8/20/06
to
Die Tastatur von Dirk Wunsch wurde wie folgt gedrückt:


Das ist exceltechnisch falsch, denn sortiert wird immer ein ganzer Bereich
(also auch A).

Inhaltlich verstehe ich aber, was Du meinst: Du möchtest eine
benutzerdefinierte Sortierung erreichen.

Das geht so:

Füge eine Spalte vor B ein.
Füge eine Spalte vor A ein. (ergibt A->B, BC->DE)
Schreibe eine fortlaufende Nummerierung in A.

Sortiere DE nach D
Sortiere AB nach B
Lösche Spalte C
Sortiere ABCD nach A
Lösche Spalte A

Ich hoffe, dass ich die Reihenfolge im Kopf richtig gemacht habe
(ungetestet).
Zeichne den Vorgang auf, so dass Du fürderhin mit einem Klick dies erreichen
kannst.

Ich ging von in A und B identischen Einträgen in unterschiedlicher
Reihenfolge aus.
--
Moin + Gruss Alexander - XPHome SP2 MSO 2000 SP3 +----5----6----5----7-2


Dirk Wunsch

unread,
Aug 20, 2006, 12:15:56 PM8/20/06
to
"Claus Busch" <claus...@nospam.de> schrieb im Newsbeitrag
news:11axxx6dbcv5v$.1u3nanmxuc9fv$.dlg@40tude.net...

Hiho Claus!

Danke für die schnelle Hilfe! Funktioniert tadelos...
Kannst du mir weiterhelfen wie das in VBA am sinnvollsten gemacht werden
könnte?

Grüße,
Dirk


Claus Busch

unread,
Aug 20, 2006, 12:39:18 PM8/20/06
to
Hallo Dirk,

Am Sun, 20 Aug 2006 18:15:56 +0200 schrieb Dirk Wunsch:

> Danke für die schnelle Hilfe! Funktioniert tadelos...
> Kannst du mir weiterhelfen wie das in VBA am sinnvollsten gemacht werden
> könnte?

probiere es mal so:
Sub Sortieren()
Dim LRow As Long

LRow = Cells(Rows.Count, 1).End(xlUp).Row

Range("A1:A" & LRow).Copy _
Destination:=Range("E1")

Range("F1").FormulaR1C1 = "=RC[-1]"
Range("F1").AutoFill Destination:=Range("F1:F" & LRow), _
Type:=xlFillDefault
Range("G1").FormulaR1C1 = "=VLOOKUP(RC[-1],R1C2:R5C3,2,0)"
Range("G1").AutoFill Destination:=Range("G1:G" & LRow), _
Type:=xlFillDefault

End Sub

Dirk Wunsch

unread,
Aug 20, 2006, 12:46:09 PM8/20/06
to

"Claus Busch" <claus...@nospam.de> schrieb im Newsbeitrag
news:wxq4gggqnj32$.g5mao36yduf.dlg@40tude.net...

Hiho Claus!

Ich denke das ist die Lösung. Einfach und praktikabel.
Danke!!!

Grüße,
Dirk


Dirk Wunsch

unread,
Aug 20, 2006, 12:45:23 PM8/20/06
to
"Alexander Wolff" <oo...@gmx.de> schrieb im Newsbeitrag
news:eca211$58m$02$1...@news.t-online.com...

Hiho Alexander!

Das funktioniert ja sehr gut. Danke für die Hilfe!

Grüße,
Dirk


Claus Busch

unread,
Aug 20, 2006, 12:55:22 PM8/20/06
to
Hallo Dirk,

> Ich denke das ist die Lösung. Einfach und praktikabel.
> Danke!!!

die Lösung von Alexander braucht keine neue Tabelle und hat daher ihre
Vorteile. Auch das kannst du mit VBA realisieren:
Sub Sortieren2()
Dim Lrow As Long

Lrow = Cells(Rows.Count, 1).End(xlUp).Row

Columns("A:A").Insert Shift:=xlToRight
Range("A1").FormulaR1C1 = "1"
Range("A1").AutoFill Destination:=Range("A1:A" & Lrow), _
Type:=xlFillSeries
Columns("C:D").Sort Key1:=Range("D1"), Order1:=xlAscending, _
Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Columns("A:B").Sort Key1:=Range("B1"), Order1:=xlAscending, _
Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom _
Columns("A:D").Sort Key1:=Range("A1"), Order1:=xlAscending,
Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Columns("A:A").Delete Shift:=xlToLeft

Dirk Wunsch

unread,
Aug 20, 2006, 1:21:43 PM8/20/06
to

"Claus Busch" <claus...@nospam.de> schrieb im Newsbeitrag
news:9k4i1ra36qrm.14...@40tude.net...

Hiho Claus!

Erneut ein Dankeschön! Es funktioniert super.

Grüße,
Dirk


Claus Busch

unread,
Aug 20, 2006, 1:26:04 PM8/20/06
to
Hallo Dirk,

Am Sun, 20 Aug 2006 19:21:43 +0200 schrieb Dirk Wunsch:

> Erneut ein Dankeschön! Es funktioniert super.

keine Ursache. Freut mich, wenn ich helfen konnte. Danke für die
Rückmeldung.
Allerdings ist beim Sortieren noch ein Fehler in dem Code. So stimmt er
jetzt:


Sub Sortieren2()
Dim Lrow As Long

Lrow = Cells(Rows.Count, 1).End(xlUp).Row

Columns("A:A").Insert Shift:=xlToRight
Range("A1").FormulaR1C1 = "1"
Range("A1").AutoFill Destination:=Range("A1:A" & Lrow), _
Type:=xlFillSeries

Columns("C:D").Sort Key1:=Range("C1"), Order1:=xlAscending, _
Header:=xlGuess, OrderCustom:=1, MatchCase:=False, _


Orientation:=xlTopToBottom
Columns("A:B").Sort Key1:=Range("B1"), Order1:=xlAscending, _

Header:=xlGuess, OrderCustom:=1, MatchCase:=False, _
Orientation:=xlTopToBottom
Columns("A:D").Sort Key1:=Range("A1"), Order1:=xlAscending, _
Header:=xlGuess, OrderCustom:=1, MatchCase:=False, _

Klaus "Perry" Pago

unread,
Aug 20, 2006, 1:33:13 PM8/20/06
to
Hallo Dirk,

"Dirk Wunsch" <dwu...@wuhome.de> schrieb im Newsbeitrag
news:un7YVGHx...@TK2MSFTNGP02.phx.gbl...

ohne VBA könnte es so gehen:

D1: =INDEX($B:$B;VERGLEICH($A1;$B:$B;0))
E1: =INDEX($C:$C;VERGLEICH($A1;$B:$B;0))
und nach Bedarf herunterkopieren

zur Not könnte man die Spalten B und C ausblenden

Gruß
Klaus


Alexander Wolff

unread,
Aug 20, 2006, 2:11:29 PM8/20/06
to
> Das funktioniert ja sehr gut. Danke für die Hilfe!

Das freut mich! Ich versuchs gern immer mit den Bordmitteln von Excel 1.0.

Dirk Wunsch

unread,
Aug 20, 2006, 2:29:46 PM8/20/06
to

"Klaus "Perry" Pago" <pe...@dachs.ping.de> schrieb im Newsbeitrag
news:%23Xm278H...@TK2MSFTNGP02.phx.gbl...

Hiho Klaus!

Danke für Deine Hilfe. Ich sehe es gibt viele Wege nach Rom :-)

Grüße,
Dirk


0 new messages