/ / Sortierung über die Blätter in Excel - Excel, Sortierung, VBA, Excel-VBA, Dynamic-Linking

Sortieren über Blätter in Excel - Excel, Sortieren, VBA, Excel-VBA, dynamische Verknüpfung

Ich weiß nicht, ob das möglich ist oder nicht.

Ich habe eine Arbeitsmappe mit zwei Blättern, "Eingabe" und "Ausgabe"

user1 füllt das "Eingabeblatt" aus

Spalte A = Name
Spalte B = Alter
Spalte C = Ort
Spalte D = Höhe
..
..

Dann wird in Spalte A auf dem Blatt "Ausgabe" festgelegt, dass der Wert aus Spalte A auf dem Blatt "Eingabe" kopiert wird, und Benutzer2 füllt weitere Details mit den von Benutzer1 eingegebenen Werten aus

Spalte B = Augenfarbe
Spalte C = Haarfarbe
Spalte D = Anzahl der Finger
..
..

Also ich hoffe du kommst auf die Idee, User1 gibt welche einDetails, und Benutzer2 erledigt einige Arbeiten damit und gibt weitere Details in das "Ausgabeblatt" ein. Spalte A ist der "Index" -Wert, der die beiden miteinander verbindet.

Mein Problem ist, dass, wenn User2 dort Details eingibt,Wenn Sie dann zum "Eingabe" -Blatt zurückkehren und eine Sortierung durchführen, stimmen die Werte im "Ausgabe" -Blatt nicht mehr überein, da in Spalte A Änderungen vorgenommen werden, um den Sortiervorgang widerzuspiegeln, während der Rest gleich bleibt.

Ist es möglich, Zeilen zwischen Blättern zu verknüpfen oder einen Sortiercode zu erstellen, der über beide Blätter läuft und deren Konsistenz beibehält?

Dies muss bei Ad-hoc-Suchen, die der Benutzer versucht, nicht funktionieren. Ich möchte lediglich eine Schaltfläche auf dem Eingabeblatt platzieren, z. B. "Nach Name sortieren", "Nach Standort sortieren" usw

Grüße

Aaron

Antworten:

1 für die Antwort № 1

Wenn Sie mit voreingestellten Sortierungen einverstanden sind, eineDie Lösung besteht darin, beide Werte von Blatt A und Blatt B auf Blatt C zu spiegeln und diese dann zu sortieren und die Werte in Blatt A und B erneut mit den neuen, sortierten Ergebnissen zu füllen.

I.e.

Sheet1                   | Sheet 2                           | Sheet 3 (Hidden and named)
|                                   |
Name     Age    etc,     | Eye Colour    Hair colour   etc.  | =Sheet1!A1 ... =Sheet2!A1

Dann würde Ihre Sortierschaltfläche ein Unterelement wie folgt aufrufen:

Dim rngSortRange As Range, rngStartCell As Range, rngEndCell As Range
Set rngStartCell = Worksheets("Sheet_3_Name_Goes_Here").Range("A1")
Set rngEndCell = Worksheets("Sheet_3_Name_Goes_Here").Range( _
rngStartCell.End(xlToRight).Column, _
rngStartCell.End(xlDown).Row)
Set rngSortRange = Worksheets("Sheet_3_Name_Goes_Here").Range(rngStartCell, rngEndCell)
rngSortRange.Sort Key1:=<Column Number Here>, Order1:=xlAscending, Header:=xlYes
rngSortRange.Range(rngStartCell, _
Worksheets("Sheet_3_Name_Goes_Here").Range( _
Worksheets("Sheet 1").Range("A1").End(xlToRight).Column, _
rngEndCell.Row _
) _
).Copy
Worksheets("Sheet 1").Paste
rngSortRange.Range(Worksheets("Sheet_3_Name_Goes_Here").Range(
rngStartCell.Column + Worksheets("Sheet 1").Range("A1").End(xlToRight).Column, _
rngStartCell.Row _
), _
rngEndCell _
).Copy
Worksheets("Sheet 2").Paste

Das könnte etwas Arbeit erfordern (z. Möglicherweise müssen Sie sheet3 anschließend zurücksetzen. Möglicherweise müssen Sie Werte einfügen, anstatt sie einzufügen. Andernfalls werden Sie am Ende selbstreferenzierende Formeln einfügen. Die Grundidee sollte jedoch funktionieren.