Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Werte aus Tabelle auslesen

Werte aus Tabelle auslesen
Chris
Hi
Ich habe eine Frage die wahrscheinlich am ehesten in Richtung VBA geht und wahrscheinlich auch kein großes Problem darstellt (für Euch).
Ich habe 3 Tabellen.
In Tabelle 1 steht in Spalte I ab Zeile 14 entweder "wesentlich" oder "unwesentlich". Wenn "wesentlich" dann sollen die Resultate aus Tabelle 1, Spalte A & B, Zeile 14 in Tabelle 2 ab Zeile 16 in Spalte A & B eingetragen werden. Wenn "unwesentlich" dann sollen die Resultate aus Tabelle 1 in Tabelle 3 ab Zeile 10 Spalte A & B eingetragen werden.
Der Hintergrund ist wahrscheinlich klar. Ich muss Werte aus Tabelle 1 Spalte A & B mit den beiden Suchkriterien "wesentlich" und "unwesentlich" finden und jeweils in Tabelle 2 und 3 einfügen. Und das ohne Leerzeilen zu haben. Nach meiner Vorstellung geht das am einfachsten mit VBA, aber ich weiß nicht wie. Ihr aber bestimmt und es wäre super, wenn Ihr mir helfen könntet.
Vielen, vielen Dank!
Chris
Anzeige
AW: Werte aus Tabelle auslesen
23.11.2011 11:24:16
Rudi
Hallo,
prinzipiell so:
 ABCDEFG
10101102 wesentlich 101102
11111112 wesentlich 111112
12121122 wesentlich 121122
13131132 unwesentlich 151152
14141142 unwesentlich 171172
15151152 wesentlich 181182

ZelleFormel
F10{=INDEX(A$10:A$30;KKLEINSTE(WENN($D$10:$D$30=" wesentlich" ;ZEILE($10:$30)-9;" " );ZEILE(A1)))}
G10{=INDEX(B$10:B$30;KKLEINSTE(WENN($D$10:$D$30=" wesentlich" ;ZEILE($10:$30)-9;" " );ZEILE(B1)))}
Achtung, Matrixformel!
Die geschweiften Klammern{} nicht eingeben,
sondern die Zelle mit
Shift + Strg + Enter
verlassen statt Enter alleine.

Gruß
Rudi
Anzeige
AW: Werte aus Tabelle auslesen
23.11.2011 11:34:48
Chris
Vielen Dank für die schnelle Antwort.
Aber wenn ich das über eine Formel mache, dann muss ich ja die Formel immer runterkopieren. Die Anzahl der Datensätze ist nicht immer gleich!
Mit VBA würde doch über die ganzen Datensätze geschaut und die Anzahl der Datensätz je nach Suchkriterium auf Tabelle 2 und 3 aufgeteilt.
Deswegen müßte ich das doch mit VBA machen, wenn ich nur wüßte wie.
Anzeige
AW: Werte aus Tabelle auslesen
23.11.2011 11:59:38
Rudi
Hallo,
in ein Modul:
Sub prcStart()
GetValues "wesentlich", Sheets("Tabelle2").Cells(10, 1)
GetValues "unwesentlich", Sheets("Tabelle3").Cells(10, 1)
End Sub
Sub GetValues(strMatch As String, rngZiel As Range)
Dim vntArr(), lngCounter As Long, rngC As Range
With Sheets("Tabelle1")
ReDim vntArr(1 To Application.CountIf(.Columns(9), strMatch), 1 To 2)
For Each rngC In .Range(.Cells(10, 9), .Cells(Rows.Count, 9).End(xlUp))
If rngC = strMatch Then
lngCounter = lngCounter + 1
vntArr(lngCounter, 1) = rngC.Offset(, -8)
vntArr(lngCounter, 2) = rngC.Offset(, -7)
End If
Next
End With
rngZiel.Resize(lngCounter, 2) = vntArr
End Sub

Gruß
Rudi
Anzeige
AW: Werte aus Tabelle auslesen
23.11.2011 14:46:42
Chris
Hallo und Danke nochmal,
aber irgendwie geht es nicht richtig.
Ich habe mal eine Demo-Datei angefügt.
https://www.herber.de/bbs/user/77620.xlsx
In der Tabelle "Übersicht" sind die Werte die an die Tabellen "wesentlich" und "unwesentlich" übergeben werden müssen. Da es viele Buchtitel sind, macht es keinen Spaß das alles manuell zu machen.
Anzeige
AW: Werte aus Tabelle auslesen
23.11.2011 15:00:20
Chris
Schuldigung!!!
Es geht!!!
1000dank an den edlen Helfer!!!
AW: Werte aus Tabelle auslesen
23.11.2011 15:00:45
Rudi
Hallo,
passe die Tabellennamen Tabelle1, 2, 3 an. Dann geht's.
Gruß
Rudi
AW: Werte aus Tabelle auslesen
23.11.2011 15:03:24
Chris
Ja, habe ich gemacht! Wie gesagt es funktiert auch. Aber eine Frage habe ich noch! Es werden nur die Werte aus Spalte A übergeben. Ich brauche aber auch noch die Werte aus Spalte B!
Was muss ich dafür anpassen?
Anzeige
es werden A&B übergeben. owT
23.11.2011 15:33:29
Rudi
AW: es werden A&B übergeben. owT
23.11.2011 16:11:47
Chris
Sorry, wenn ich Dir nochmal auf den Keks gehen muss. Was muss ich den abändern, wenn ich aus Tabelle 1 nicht nur Spalte A & B, sondern die Spalten A - D an Tabelle 3 (nicht an Tabelle 2) übergeben möchte.
Danke nochmal
Chris
Keks
23.11.2011 17:25:20
Rudi
Hallo,
was mir auf den Keks geht, sind ungenaue Fragestellungen und ellenlange Nachbesserungen.
Hab jetzt keine Zeit.
Gruß
Rudi
Anzeige
AW: Keks
23.11.2011 17:29:39
Chris
Naja, kann ich mir vorstellen. Aber das was ich habe ist ja auch schon mal mehr als super!!!
Und wenn vielleicht für die letzte Frage noch Zeit ist, dann wäre es prima wenn Du mir diese noch beantworten könntest. Wenn nicht, dann totzdem danke!!!
jetzt Zeit
23.11.2011 20:19:30
Rudi
Hallo,
Sub prcStart()
GetValues "wesentlich", Sheets("wesentlich").Cells(10, 1), 2
GetValues "unwesentlich", Sheets("unwesentlich").Cells(10, 1), 4
End Sub

Sub GetValues(strMatch As String, rngZiel As Range, iColumns As Integer)
Dim vntArr(), lngCounter As Long, rngC As Range, j As Integer
With Sheets("Übersicht")
ReDim vntArr(1 To Application.CountIf(.Columns(9), strMatch), 1 To iColumns)
For Each rngC In .Range(.Cells(10, 9), .Cells(Rows.Count, 9).End(xlUp))
If rngC = strMatch Then
lngCounter = lngCounter + 1
For j = 1 To iColumns
vntArr(lngCounter, j) = rngC.Offset(, -9 + j)
Next j
End If
Next
End With
rngZiel.Resize(lngCounter, iColumns) = vntArr
End Sub

Gruß
Rudi
Anzeige
AW: jetzt Zeit
24.11.2011 10:38:47
Chris
Mir bleibt nicht mehr übrig, als mich ganz herzlich zu bedanken!
Vielen, vielen Dank!
Chris
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Werte aus Tabelle auslesen in Excel


Schritt-für-Schritt-Anleitung

Um Werte aus einer Tabelle auszulesen und in andere Tabellen zu übertragen, kannst du VBA in Excel verwenden. Hier ist eine Schritt-für-Schritt-Anleitung:

  1. Öffne Excel und erstelle ein neues Arbeitsblatt oder öffne eine bestehende Datei mit mehreren Tabellen.

  2. Drücke ALT + F11, um den VBA-Editor zu öffnen.

  3. Erstelle ein neues Modul:

    • Klicke auf Einfügen > Modul.
  4. Füge den folgenden Code ein:

    Sub prcStart()
       GetValues "wesentlich", Sheets("Tabelle2").Cells(10, 1)
       GetValues "unwesentlich", Sheets("Tabelle3").Cells(10, 1)
    End Sub
    
    Sub GetValues(strMatch As String, rngZiel As Range)
       Dim vntArr(), lngCounter As Long, rngC As Range
       With Sheets("Tabelle1")
           ReDim vntArr(1 To Application.CountIf(.Columns(9), strMatch), 1 To 2)
           For Each rngC In .Range(.Cells(10, 9), .Cells(Rows.Count, 9).End(xlUp))
               If rngC = strMatch Then
                   lngCounter = lngCounter + 1
                   vntArr(lngCounter, 1) = rngC.Offset(, -8)
                   vntArr(lngCounter, 2) = rngC.Offset(, -7)
               End If
           Next
       End With
       rngZiel.Resize(lngCounter, 2) = vntArr
    End Sub
  5. Schließe den VBA-Editor und kehre zu Excel zurück.

  6. Führe das Makro aus, indem du ALT + F8 drückst und prcStart auswählst.

Nun werden die Werte aus Tabelle 1 in Tabelle 2 und 3 entsprechend der Kriterien "wesentlich" und "unwesentlich" übertragen.


Häufige Fehler und Lösungen

  • Fehler: "Das Makro konnte nicht gefunden werden."

    • Überprüfe, ob du den richtigen Namen für das Makro verwendest und dass du es in einem Modul gespeichert hast.
  • Fehler: "Die Zellen sind leer."

    • Stelle sicher, dass deine Daten in Tabelle 1 korrekt eingegeben sind und dass die Spalte mit den Kriterien (z.B. D) die richtigen Werte enthält.
  • Fehler: "Das Array hat eine falsche Dimension."

    • Achte darauf, dass du die Anzahl der Spalten in ReDim vntArr entsprechend anpasst, wenn du mehr oder weniger als 2 Spalten übertragen möchtest.

Alternative Methoden

Wenn du keine VBA-Lösungen verwenden möchtest, kannst du auch Excel-Formeln nutzen:

  • Verwende die Funktion INDEX und KKLEINSTE für das Auslesen von Werten:

    =INDEX(A$10:A$30;KKLEINSTE(WENN($D$10:$D$30="wesentlich";ZEILE($10:$30)-9;"");ZEILE(A1)))
  • Diese Formel hilft dir, Werte aus einer Tabelle auszulesen und in eine andere Tabelle zu übernehmen, ohne VBA zu verwenden. Beachte, dass du die Formel nach unten ziehen musst, um alle Ergebnisse zu erhalten.


Praktische Beispiele

Angenommen, du hast folgende Daten in Tabelle 1:

A B D
Wert1 Wert2 wesentlich
Wert3 Wert4 unwesentlich
Wert5 Wert6 wesentlich

Wenn du die oben genannten VBA-Funktionen ausführst, werden Wert1 und Wert5 in Tabelle 2 (wesentlich) und Wert3 in Tabelle 3 (unwesentlich) übertragen.


Tipps für Profis

  • Verwende dynamische Bereiche: Um die Anzahl der Datensätze flexibel zu halten, kannst du dynamische Bereiche in Excel definieren, sodass deine Formeln oder VBA-Skripte automatisch die neuen Daten erkennen.

  • Fehlersuche mit Debugging: Wenn dein VBA-Skript nicht funktioniert, setze Haltepunkte im Code, um den Fehler zu lokalisieren.

  • Dokumentation: Halte deine VBA-Codes gut dokumentiert, damit du und andere Benutzer später leichter verstehen, was der Code tut.


FAQ: Häufige Fragen

1. Wie kann ich die Werte aus einer bestimmten Spalte auslesen? Du kannst die Zahl der Spalten in der GetValues Funktion anpassen, indem du die Variable iColumns änderst. Wenn du beispielsweise Spalten A-D auslesen möchtest, setze iColumns auf 4.

2. Funktioniert das auch in Excel 365? Ja, die beschriebenen Methoden und VBA-Codes sind in Excel 365 und anderen neueren Versionen kompatibel. Stelle sicher, dass Makros aktiviert sind.

3. Was mache ich, wenn ich mehr als zwei Suchkriterien habe? Du kannst die Funktion GetValues erweitern, um weitere Kriterien zu berücksichtigen, indem du zusätzliche Parameter hinzufügst und die Logik entsprechend anpasst.

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