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

Daten aus Tabelle auslesen + in anderer eintragen

Daten aus Tabelle auslesen + in anderer eintragen
16.11.2016 19:36:31
arne
Moin,
so viel probiert und irgendwie klappt das mit dem Auslesen der Daten trotzdem nicht vollständig.
Ich möchte aus der Datenbasis-Tabelle Daten (ab Zeile 3, Spalte 3 und 4) auslesen, die nicht direkt untereinander stehen und sich auf eine Zelle beziehen, die in der Zieltabelle enthalten ist.
Tabelle1 - Datenbasis-Tabelle
https://www.herber.de/bbs/user/109490.xlsm
in der Zieltabelle soll nach den Wert aus C1 gesucht werden.
in A10 bis A19 stehen die Zahlen 1-10 (also A10 = 1, A11 = 2 usw.), und der Wert aus Spalte E soll eingetragen werden.
Also C1 = 1 dann steht in der Zieltabelle Spalte D der Wert aus der Spalte E der Datenbasis:
D10 = 14
D11 = 18
D12 = 24
mit meiner SUB auslesen werden die Daten nicht alle gelesen. Kann mir jemand helfen?

Private Sub auslesen()
Dim i As Long, Zeile As Long, letzteZeile As Long
Dim Betrag As Currency
Dim ANR As Integer
Dim Teil As Integer
Dim Arbeitsmappe As Workbook
Dim Datenbasis As Worksheet
Dim Ziel As Worksheet
Dim AZ As Range
Dim BereichB As Range
Dim BereichA As Range
Dim arr As Variant
Set Arbeitsmappe = ThisWorkbook
Set Datenbasis = Arbeitsmappe.Worksheets("Tabelle1")
Set Ziel = Arbeitsmappe.Worksheets("Tabelle2")
letzteZeile = Datenbasis.Range("A1048576").End(xlUp).Row
Set BereichA = Datenbasis.Range("C1:C" & letzteZeile)
Set BereichB = Datenbasis.Range("D1:D" & letzteZeile)
'Die erste Datenprüfung nach ANR in Tabelle1
With Datenbasis
arr = .Range("C2:C" & .Cells(.Rows.Count, 1).End(xlUp).Row)
End With
ANR = Ziel.Range("C1").Value
For i = 10 To Ziel.Range("A19").Row
If Not arr(i - 9, 1) = ANR Then GoTo sprung_nexti
Teil = Ziel.Range("A" & i).Value
'Zweite Datenprüfung nach AZ
With Datenbasis
Set AZ = BereichB.Find(Teil)
If AZ Is Nothing Then
Betrag = 0
Ziel.Range("C" & i).Value = Betrag
'Eintrag, wenn AZ gefunden sind
Else
Zeile = AZ.Row
Betrag = .Range("E" & Zeile).Value
Ziel.Range("D" & i).Value = Betrag
Rows(10).EntireRow.Hidden = False
Rows(i).EntireRow.Hidden = False
Rows(19).EntireRow.Hidden = False
Set AZ = Nothing
End If
End With
'wenn ANR gefunden
sprung_nexti:
If i - 11 > Teil + 2 Then Exit Sub
Next i
End Sub

Danke für eure Hilfe

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Daten aus Tabelle auslesen + in anderer eintragen
17.11.2016 04:51:14
fcs
Hallo Arne,
leider ist deine Beschreibung nicht so ganz eindeutig und deine Makro-Versuche verwirren einen dann endgültig.
Ich hab dir jetzt das Makro mal soweit aufbereitet wie ich deine Beschreibung verstanden hab.
Falls die Spalte D in der Datenbasis für die Vergleiche auch noch relevant ist, dann musst du erst einmal genau beschreiben, wie der Vergleich ablaufen soll.
LG
Franz
Private Sub auslesen()
Dim Arbeitsmappe As Workbook
Dim Datenbasis As Worksheet
Dim Ziel As Worksheet
Dim Zeile_DB As Long, letzteZeile As Long
Dim Zeile_Z1 As Long, Zeile_Z As Long
Dim ANR As Integer
Dim arrDB As Variant
Set Arbeitsmappe = ThisWorkbook
Set Datenbasis = Arbeitsmappe.Worksheets("Tabelle1")
Set Ziel = Arbeitsmappe.Worksheets("Tabelle2")
With Ziel
Zeile_Z1 = 10 '1. Zeile in die Ergebnisse eingetragen werden sollen
'letzte Zeile mit Daten in Spalte A
Zeile_Z = .Cells(.Rows.Count, 1).End(xlUp).Row
'Alt-Daten in Spalte D löschen
.Range(.Cells(Zeile_Z1, 4), .Cells(Zeile_Z, 4)).ClearContents
End With
With Datenbasis
'letzte Zeile mit Daten in Spalte A
letzteZeile = .Cells(.Rows.Count, 1).End(xlUp).Row
'Daten in Datenbasis für schnellen Datenvergleich in Array laden
arrDB = .Range(.Cells(1, 1), .Cells(letzteZeile, 5))
End With
ANR = Ziel.Range("C1").Value
Zeile_Z = Zeile_Z1 'Zeilenzähler für Zieltabelle setzen
'Werte in Spalte C der Datenbasis mit ANR vergleichen
For Zeile_DB = 3 To letzteZeile
If arrDB(Zeile_DB, 3) = ANR Then
'Bei Übereinstimmung Wert aus Spalte E in Ziel-Tabelle eintragen
Ziel.Cells(Zeile_Z, 4).Value = arrDB(Zeile_DB, 5)
Zeile_Z = Zeile_Z + 1 'Zeilenzähler erhöhen
End If
Next Zeile_DB
If Zeile_Z = Zeile_Z1 Then
MsgBox "Wert """ & ANR & """ in Datenbasis nicht gefunden!", vbOKOnly, "Suche nach Wert  _
aus C1"
End If
Erase arrDB
End Sub

Anzeige
AW: Daten aus Tabelle auslesen + in anderer eintragen
17.11.2016 21:10:55
Arne
Hallo Franz,
super, das hat ja auf Anhieb bei mir geklappt. Vielen Dank. Nachdem ich Dein so strukturiertes Makro gelesen habe, verstehe ich auch das mein Makro leicht verwirrend war. Nochmals vielen Dank.
LG Arne

380 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige