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
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
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
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
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
Hiho Claus!
Ich denke das ist die Lösung. Einfach und praktikabel.
Danke!!!
Grüße,
Dirk
Hiho Alexander!
Das funktioniert ja sehr gut. Danke für die Hilfe!
Grüße,
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
Hiho Claus!
Erneut ein Dankeschön! Es funktioniert super.
Grüße,
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, _
"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
Das freut mich! Ich versuchs gern immer mit den Bordmitteln von Excel 1.0.
Hiho Klaus!
Danke für Deine Hilfe. Ich sehe es gibt viele Wege nach Rom :-)
Grüße,
Dirk