Hallo Miteinander,
ich möchte verschiedene Generationen einer Tabelle vergleichen, die alle auf einer gemeinsamen Vorlage basieren. Die Tabellen besitzen ein- bis zweitausend Zeileneinträge und über 50 Spalten. An den Quelltabellen soll nichts verändert werden.
Dummerweise gibt es zwischen den Generationen, die ich geschickt bekomme, nicht nur kleinere Änderungen in Zeilenwerten sondern auch strukturelle Veränderungen in den Spalten. So werden (für meine Auswertung) irrelevante Spalten eingefügt oder wieder gelöscht. Damit ändern sich aber die rechts danebenstehenden Spalten-Buchstaben.
Ziel ist es eine Musterauswertung zu machen, bei der dann nur zwei verschiedene Generation einkopiert werden und dann nicht mehr viel manuell gemacht werden soll, bis man das Endergebnis erhält. Makros und VBA sollen nach jetziger Überlegung nicht zum Einsatz kommen.
Die Grundstruktur bleibt aber unveränderlich:
Alle relevanten Spalten haben in Zeile 3 eine gleichbleibene, einzigartige Überschrift. Und die Zeilen mit den Inhalten besitzen einen eindeutigen Schlüssel.
Mein aktuelles Vorgehen finde ich schon sehr effektiv: Der einzig manuelle Schritt besteht augenblicklich darin, die Inhalte der Spalten der beiden Vergleichsdateien, die den Schlüsselwert enthalten, in eine anderes Arbeitsblatt zu kopieren und dort per Klick zu sortieren und Duplikate zu löschen.
Dann rechne ich mit der Vereinigungsmenge der Schlüssel per VERGLEICH() aus, in welchen Zeilen der Quelltabellen die jeweiligen Einträge ggf. liegen.
Im Arbeitsblatt, das das Endergebnis ermittelt, ermittele ich über zwei weitere Formeln mit VERGLEICH(), welcher Spalte das in der jeweiligen Quelltabelle entspricht.
Dann ziehe ich mir über
=INDIREKT(ADRESSE(;;WAHR:wink:) die zueinander passenden Werte der relevanten Spalten aus den beiden Tabellen und lasse dann das ganze Formelwerk für die Auswertung arbeiten.
Meine Frage an die Spezialisten:
Gibt es was schnelleres als =INDIREKT(ADRESSE()), um an einen Zelleninhalt zu kommen, dessen Koordinaten man kennt?
Im Zwischenschritt muss ich die VERGLEICH()-Funktion anwenden, um die einzelnen Schlüsselwerte in der jeweiligen Tabelle zu finden. Bislang habe ich hier keine Möglichkeit entdeckt, um die absoluter Spaltenadresse bei der Suchmatrix ebenso flexibel zu machen. Momentan muss der Schlüsselwert fix in Spalte X stehen, um die Zeilennummer zu ermitteln.
=VERGLEICH(;!X:X;0)
Ich würde das gerne aber so wie bei den Einzelfeldern machen und vorher ermitteln, in welcher Spalte der Schlüsselwert diesmal steckt. Aber ich habe noch keine Formel funden, um dann in der -ten Spalte einen Schlüsselwert zu suchen und als Ergebnis die Zeilenzahl zu erhalten. Mit INDIREKT() kann ich nur Einzelzellen adressieren, nicht aber einen Vektor.
Die *VERWEIS()-Formeln kranken daran, dass sie nur in der ersten Spalte suchen können, bei mir der Schlüsselwert irgendwo in einer Spalte der Tabellenmitte abgelegt ist.
Wer hat ein gute Idee?
Ciao, Allesquatsch