Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: SVerweis (Horizontal und vertikal) + Index

SVerweis (Horizontal und vertikal) + Index
13.01.2019 00:17:24
Holger
Hallo zusammen,
ich komme beim Erstellen einer Abfrage nicht weiter. Hatte es mit INDEX-Funktion versucht, aber es klappt nicht so richtig.
Was hätte ich gerne.
Im Tabellenblatt 1 ist eine Übersicht über alle Mitarbeiter inkl Personalnummer (Spalte A) sowie allen möglichen Kompetenzen / Trainings inkl Seminarnummer (Zeil 1).
Im Tabellenblatt 2 ist eine Übersicht über alle durchgeführten Trainings. Spalte A Seminarnummer, Spalte H Personalnummer und Spalte R Teilgenommen.
Und jetzt hätte ich gerne, dass im Tabellenblatt 1 in den Spalten E, G, I usw der Wert aus dem Tabellenblatt 2, Spalte R steht, in Abhängigkeit von Seminarnummer und Personalnummer.
Hoffe ich konnte es verständlich erklären.
https://www.herber.de/bbs/user/126704.xlsx
Danke für eure Hilfe
Holger
Anzeige

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: SVerweis (Horizontal und vertikal) + Index
13.01.2019 00:21:57
Holger
Hatte noch einen Punkt vergessen. Sollte es im Tabellenblatt 2 keine Treffen im Bezug auf Personalnummer und Seminarnummer geben, dann soll auch ein "nein" im Tabellenblatt ausgegeben werden.
AW: SVerweis (Horizontal und vertikal) + Index
13.01.2019 00:54:50
onur
Und wieso gibt es auf dem einen Blatt 8 MA und auf dem anderen 11?
AW: SVerweis (Horizontal und vertikal) + Index
13.01.2019 01:07:05
Holger
Sorry,
das war beispielhaft.
Tabellenblatt 1 hat nach unten hin noch deutlich mehr Mitarbeiter und nach rechts deutlich mehr Kompetenzen.
Tabellenplatz 2 hat nach unten hin auch deutlich mehr Zeilen, so kann auch eine Personalnummer mehrmals vorkommen, allerdings immer nur einmal in der Kombination mit einer Seminarnummer.
Die restlichen Spalten sind auch befüllt, jedoch habe ich diese rausgelöscht, da für dieses Thema irrelevant.
Danke für einen Tip
Holger
Anzeige
AW: es geht auch mit INDEX() und Co ...
13.01.2019 10:24:25
neopa
Hallo Holger,
... und zwar mit einer Matrixfunktion(alität)sformel die keines spez. Formelabschluss wie eine klassische Matrixformel benötigt.
In E7:

=WENN(A7="";"";WENNFEHLER(INDEX(Tabelle2!$R:$R;AGGREGAT(15;6;ZEILE(Tabelle2!R$2:R$99)/
(Tabelle2!$H$2:$H$99=$A7)/(((Tabelle2!$A$2:$A$99=D$1)+(Tabelle2!$C$2:$C$99=D$2))>0);1));"-"))
und Formel nach unten kopieren und danach in die entsprechenden Spalten nach rechts.
Das "-" in der Formel könntest Du natürlich auch durch "nein" ersetzen.
Gruß Werner
.. , - ...
Anzeige
AW: es geht auch mit INDEX() und Co ...
13.01.2019 16:45:33
Holger
Hallo zusammen,
Danke für Eure Hilfe. Die Formel von Werner ist für mich als Laie etwas besser zu händeln. Auch wenn ich sie in ihrer Gesamtheit nicht durchblicke.
Soweit ich das versteh müssen jedoch Seminarnummer und Seminartitel übereinstimmen. Zumindest bezieht sich die Formel in einem Teil auf "D2".
Wie müsste die Formel aussehen, wenn lediglich Personalnummer und Seminarnummer abgeglichen werden und die Teilnahme ja/nein ausgegeben wird.
Danke nochmals
Holger
Anzeige
AW: es geht auch mit INDEX() und Co ...
13.01.2019 16:53:31
onur
Nix gegen Werners Lösung - sie ist sehr gut - , aber:
"Die Formel von Werner ist für mich als Laie etwas besser zu handeln"?
Was ist denn für einen Laien noch einfacher zu handeln, als eine auf dein Problem perfekt zugeschnittene UDF?
Offensichtlich weisst du nicht, was eine UDF ist oder wie meine Lösung funktioniert.
Anzeige
AW: es geht auch mit INDEX() und Co ...
13.01.2019 17:02:52
Holger
Ich war im Modul drinne und da ich mich mit VBA nicht auskenne, habe ich es nicht verstanden, ja.
Dein UDF bezieht sich u.a. auf die Zelle D2 (Seminartitel), ich würde jedoch den Zellebzug D1 (Seminarnummer) benötigen. Und da ich dies im Modul nicht zuordnen konnte, war es im ersten step für mich die kompliziertere Lösung.
Wobei die Lösung von Werner für mich ebenfalls kompliziert ist.
Wie müsste Dein UDF aussehen, wenn Seminarnummer und Personalnummer Vergleichsgrundlage sind?
Danke für Deine Hilfe
Holger
Anzeige
AW: es geht auch mit INDEX() und Co ...
13.01.2019 17:12:43
onur
Ging ja auch nicht, da auf Blatt 1 nicht überall über den Seminartiteln auch die jeweilige Nummer eingetragen war.
https://www.herber.de/bbs/user/126715.xlsm
AW: es geht auch mit INDEX() und Co ...
13.01.2019 17:32:22
Holger
Hallo onur,
danke für die erneute Antwort.
Ich habe jetzt einmal versucht in Deine Datei meine realen Daten reinzukopieren, aber irgendwie klappt es nicht.
Mein Tabellenblatt 1 hat ca 2000 Zeilen und ca 130 Spalten mit Seminarnummern bzw 260 Spalten, wenn zwischen jeder Spalte mit Seminarnummer eine Leerspalte steht, wo dann Deine Formel reinkommt. Die erste Seminarnummer steht jedoch wirklich in H1.
Mein Tabellenblatt 2 hat momentan etwas mehr als 43000 Zeilen.
Und wenn ich Dein UDF richtig verstehe, ist es nicht "generell" programmiert (weiß nicht ob das überhaupt geht) sondern es ist begrenzt bis zu einer speziellen Spalte oder Zeile?
Sorry, ich hab von VBA keine Ahnung.
Danke Dir
Holger
Anzeige
AW: es geht auch mit INDEX() und Co ...
13.01.2019 17:38:20
onur
Mach einfach aus
For ze = 2 To 1000

das hier
For ze = 2 To 45000

Das reicht.
Wieviel Zeilen oder Spalten Tabelle1 hat, ist irrelevant.
AW: dann würde die Formel einfacher ...
13.01.2019 17:55:23
neopa
Hallo Holger,
... wie ich vorhin an Luschi geschrieben habe, steht das "+" in der Formel für eine ODER-Bedingung. Die hatte ich angenommen, weil Du sonst bei Deinen eingestellten Daten in Spalte I und K überall nur "-"-Ergebnisse erhalten hättest.
So aber reicht folgende Formel in E7:
=WENN(A7="";"";WENNFEHLER(INDEX(Tabelle2!$R:$R;AGGREGAT(15;6;ZEILE(Tabelle2!R$2:R$99)/
(Tabelle2!$H$2:$H$99=$A7)/(Tabelle2!$A$2:$A$99=D$1);1));"-"))

Wenn Du Deine Datentabelle in Tabelle 2 als "intelligente" Tabelle formatierst (google mal danach), könnte man die Formel auch so definieren, dass sie sich automatisch an den wirklichen Datensatzbestand in dieser anpassen würde.
Allerdings wenn wirklich ca 43000 Datensätze in Tabelle 2 in 2000 Datensätzen für 130 Seminarnummern auszuwerten sind, wie ich jetzt erst lesen konnte, könnte Dein PC schon etwas ins Schwitzen geraden. Allerdings dürfte diese Auswertung ja anderseits nicht alle Tage bzw. oft vorgenommen werden müssen. Oder?
Gruß Werner
.. , - ..
Anzeige
AW: es geht auch mit INDEX() und Co ...
13.01.2019 17:19:41
Luschi
Hallo Werner,
ich würden diesen Teil Deiner Formellösung:

(((Tabelle2!$A$2:$A$99=D$1)+(Tabelle2!$C$2:$C$99=D$2))>0)

so schreiben:
((Tabelle2!$A$2:$A$99=D$1)/(Tabelle2!$C$2:$C$99=D$2))
Dabei geht es mir nicht um die kürzere Schreibweise sondern um diese Addition, die nach meinem Vba/C# -lastigen Programmierverständis mehr Rechenaufwand erfordert als reine logische Wahr/Falsch-Vergleiche, hinter der ein Bit-Vergleich steckt. Wie denkst Du darüber?
Gruß von Luschi
aus klein-Paris
Anzeige
AW: ohne es jetzt zu prüfen ...
13.01.2019 17:29:37
neopa
Hallo Luschi,
... würde ich meinen, dass Dein Vorschlag falsche Ergebniswerte ergeben könnte. Das "+" in einer Matrixfunktion(alität)sformel oder auch in einer klassischen Matrixformel steht ja für eine ODER-Bedingung, die hier zwingend notwendig ist und durch "/" nicht abgebildet werden kann.
Gruß Werner
.. , - ..
Anzeige
Ich hatte mal gelernt, ...
13.01.2019 22:47:10
Luc:-?
…Luschi,
dass Vgle intern mehr RechenOperationen erfordern als reine Arithmetik, es sei denn, es geht um Vgle mit 0 & Co. In einem Pgm dürfte aber auch das Provozieren einer 0-Division nicht gerade vorteilhaft sein.
Gruß, Luc :-?
;
Anzeige
Anzeige

Infobox / Tutorial

SVerweis und Index in Excel – Eine Schritt-für-Schritt-Anleitung


Schritt-für-Schritt-Anleitung

Um die Daten aus zwei verschiedenen Tabellenblättern in Excel zu verknüpfen, kannst du die Funktionen SVERWEIS und INDEX verwenden. Hier zeige ich dir, wie du dies Schritt für Schritt umsetzt:

  1. Daten vorbereiten: Stelle sicher, dass du zwei Tabellenblätter hast.

    • Tabelle1: Übersicht aller Mitarbeiter (Spalte A: Personalnummer, Zeile 1: Seminarnummer)
    • Tabelle2: Übersicht über durchgeführte Trainings (Spalte A: Seminarnummer, Spalte H: Personalnummer, Spalte R: Teilnahme)
  2. Formel einfügen: Gehe in Zelle E7 von Tabelle1 und füge die folgende Formel ein:

    =WENN(A7="";"";WENNFEHLER(INDEX(Tabelle2!$R:$R;AGGREGAT(15;6;ZEILE(Tabelle2!R$2:R$99)/(Tabelle2!$H$2:$H$99=$A7)/(Tabelle2!$A$2:$A$99=D$1);1));"-"))

    Diese Formel gibt den Wert der Teilnahme in Abhängigkeit von Personalnummer und Seminarnummer zurück. Wenn es keinen Treffer gibt, wird ein "-" ausgegeben.

  3. Formel nach unten ziehen: Ziehe die Formel in den Spalten nach unten und dann nach rechts, um die Teilnahme für alle Mitarbeiter und Seminarnummern zu überprüfen.

  4. Anpassungen vornehmen: Wenn du möchtest, dass statt "-" "nein" angezeigt wird, kannst du das "-" in der Formel einfach ersetzen.


Häufige Fehler und Lösungen

Hier sind einige häufige Fehler, die bei der Verwendung von SVERWEIS und INDEX auftreten können, sowie deren Lösungen:

  • Fehlende Übereinstimmungen: Wenn die Personalnummer oder Seminarnummer nicht übereinstimmen, zeigt die Formel einen Fehler. Stelle sicher, dass die Daten in beiden Tabellen korrekt und einheitlich formatiert sind.

  • Falsche Zellreferenzen: Überprüfe, ob die Zellreferenzen in deiner Formel korrekt sind. Insbesondere die Bereiche für SVERWEIS müssen die richtigen Spalten abdecken.

  • Leere Zellen: Wenn in den relevanten Spalten leere Zellen vorhanden sind, kann dies zu unerwarteten Ergebnissen führen. Verwende die Funktion WENNFEHLER, um diese Fehler abzufangen.


Alternative Methoden

Es gibt mehrere Methoden, um Daten in Excel zu verknüpfen. Eine davon ist die Verwendung einer benutzerdefinierten Funktion (UDF) in VBA. Diese Methode kann flexibler sein, erfordert jedoch grundlegende Kenntnisse in VBA.

Ein einfaches Beispiel könnte so aussehen:

Function UDF_SVERWEIS(seminarnummer As String, personalnummer As String) As String
    ' Hier kommt der Code für die UDF
End Function

Mit dieser Funktion kannst du dann spezifische Abfragen durchführen, die über die Standardfunktionen hinausgehen.


Praktische Beispiele

Hier ist ein praktisches Beispiel für die Verwendung von SVERWEIS und INDEX:

  1. Mitarbeiter und Seminarnummern: Angenommen, du hast in Tabelle1 die folgenden Mitarbeiter und Seminarnummern:

    • A2: 12345, D1: 001
  2. Teilnahme abfragen: Mit der oben genannten Formel in E7 prüfst du, ob Mitarbeiter 12345 an Seminar 001 teilgenommen hat.

  3. Ergebnisse auswerten: Das Ergebnis zeigt dir in E7 entweder die Teilnahme oder "nein", wenn der Mitarbeiter nicht teilgenommen hat.


Tipps für Profis

  • Fenster fixieren: Um die Übersichtlichkeit zu erhöhen, kannst du das Excel-Fenster fixieren. Gehe zu „Ansicht“ und wähle „Fenster fixieren“, um die Überschriften sichtbar zu halten, während du scrollst.

  • Daten als Tabelle formatieren: Um deine Daten dynamisch zu halten, formatiere deine Daten als Tabelle. Excel passt dann die Formeln automatisch an, wenn du neue Daten hinzufügst.

  • Verwende INDEX und VERGLEICH für flexiblere Abfragen: Anstelle von SVERWEIS, der nur nach rechts schauen kann, ermöglicht die Kombination von INDEX und VERGLEICH auch Suchen in beliebigen Richtungen.


FAQ: Häufige Fragen

1. Wie kann ich die Formel anpassen, um nur die Personalnummer zu vergleichen? Du kannst die Formel so anpassen, dass sie nur die Personalnummer und die Seminarnummer abgleicht, indem du die entsprechenden Zellreferenzen anpasst.

2. Was tun, wenn die Formeln sehr langsam sind? Wenn du mit großen Datenmengen arbeitest, kann es hilfreich sein, die Daten als Tabelle zu formatieren oder die Berechnung auf manuell zu setzen, um die Verarbeitungsgeschwindigkeit zu erhöhen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige