Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1552to1556
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Problem bei einer Abfrage

Problem bei einer Abfrage
16.04.2017 12:33:38
Hans-Jörg
Hallo Zusammen,
vieleicht kann mir jemand helfen, ich hab momentan keine Idee wie ich das Problem lösen kann.
Ich habe in einem Tabellenblatt,in Spalte A eine Nummer die sich eventuell öfters wiederholt (max.4x), in Spalte B sind hierzu verschiedene Datums-Angaben, in dem Tabellenblatt werden jeden Monat neue Daten hinzugefügt
Nun möchte ich, in einen neuen Tabellenblatt die Nummer aus Spalte A eintragen und in den Spalten daneben, also B/C/D/E sollen die Datums-Angaben die er auf dem ersten Tabellenblatt gefunden hat, ausgeben werden. Wenn nichts gefunden wurde soll die Spalte leer bleiben.
Danke im Voraus für Eure Hilfe
Jörg
https://www.herber.de/bbs/user/112904.zip

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Problem bei einer Abfrage
17.04.2017 10:19:17
Hans
Hallo Zusammen,
viele Dank für die schnelle Hilfe, werde es morgen ausprobieren und dann bericheten.
Noch schöne Ostertage
Gruß Jörg
AW: Problem bei einer Abfrage
16.04.2017 16:35:33
Sepp
Hallo Hans-Jörg,
Formel nach Rechts und Unten durch Ziehen ausfüllen.
Ausgabe

 ABCDE
1Nachweis NrDatumDatum 1Datum 2Datum 3
2861705711.01.201618.03.2017  
3862829009.12.2016   
4862829109.12.2016   
5862829209.12.2016   
6862829312.12.2016   
7862829409.12.2016   
8862829512.12.2016   
9862829609.12.2016   
10862829712.12.2016   
11862829809.12.2016   
12862829909.12.2016   
13862830012.12.2016   
14862830109.12.2016   
15862830212.12.201615.01.201718.03.201712.04.2017
16862830312.12.2016   
17862830409.12.2016   
18862830509.12.2016   
19862830609.12.2016   
20862830708.02.2017   
21862830809.12.2016   
22862830909.12.201627.02.2017  

Formeln der Tabelle
ZelleFormel
B2{=WENNFEHLER(KKLEINSTE(WENN(Matrix!$A$2:$A$1000=$A2;Matrix!$B$2:$B$1000); SPALTE(A1)); "")}
Enthält Matrixformel:
Umrandende
{ } nicht miteingeben,
sondern Formel mit STRG+SHIFT+RETURN abschließen!
Matrix verstehen


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4.8
Gruß Sepp

Anzeige
AW: Problem bei einer Abfrage
16.04.2017 19:58:51
Peter
Hallo Hans-Jörg,
so könnte es ebenfalls funtionieren Option Explicit Public Sub Find_Methode() Dim MyDict As Object Dim WkSh_Q As Worksheet Dim WkSh_Z As Worksheet Dim lZeile_Q As Long Dim lZeile_Z As Long Dim rZelle As Range Dim sFundst As String Dim iSpalte As Integer Set MyDict = CreateObject("Scripting.Dictionary") Application.ScreenUpdating = False Set WkSh_Q = ThisWorkbook.Worksheets("Matrix") Set WkSh_Z = ThisWorkbook.Worksheets("Ausgabe") With WkSh_Z .Range("A2:E" & .Cells(.Rows.Count, 1).End(xlUp).Row).ClearContents lZeile_Z = 1 End With With WkSh_Q.Columns(1) For lZeile_Q = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row If Not MyDict.exists(.Range("A" & lZeile_Q).Value) Then MyDict(Trim$(.Range("A" & lZeile_Q).Value)) = MyDict(Trim$(.Range("A" & lZeile_Q). _ Value)) Set rZelle = .Find(What:=.Range("A" & lZeile_Q).Value, LookAt:=xlWhole, LookIn:= _ xlValues) If Not rZelle Is Nothing Then sFundst = rZelle.Address lZeile_Z = lZeile_Z + 1 WkSh_Z.Range("A" & lZeile_Z).Value = WkSh_Q.Range("A" & lZeile_Q).Value iSpalte = 2 Do WkSh_Z.Cells(lZeile_Z, iSpalte).Value = WkSh_Q.Range("B" & rZelle.Row).Value iSpalte = iSpalte + 1 Set rZelle = .Cells.FindNext(rZelle) Loop While Not rZelle Is Nothing And rZelle.Address sFundst 'Else ' MsgBox "Der gesuchte Begriff """ & .Range("A" & lZeile).Value & """ wurde _ nicht gefunden.", _ 48, " Hinweis für " & Application.UserName End If End If Next lZeile_Q End With Application.ScreenUpdating = True Set MyDict = Nothing Set WkSh_Q = Nothing Set WkSh_Z = Nothing End Sub Gruß Peter
Anzeige
AW: Problem bei einer Abfrage
16.04.2017 22:14:15
Peter
Hallo Hans-Jörg,
vergiss bitte meine erste Lösung und nimm diese dafür, sie sollte besser passen.
Option Explicit
Public Sub Find_Methode()
Dim MyDict    As Object
Dim WkSh_Q    As Worksheet
Dim WkSh_Z    As Worksheet
Dim lZeile_Q  As Long
Dim lZeile_Z  As Long
Dim rZelle    As Range
Dim sFundst   As String
Dim iSpalte   As Integer
Set MyDict = CreateObject("Scripting.Dictionary")
Application.ScreenUpdating = False
Set WkSh_Q = ThisWorkbook.Worksheets("Matrix")
Set WkSh_Z = ThisWorkbook.Worksheets("Ausgabe")
With WkSh_Z
.Range("A2:E" & .Cells(.Rows.Count, 1).End(xlUp).Row).ClearContents
lZeile_Z = 1
End With
For lZeile_Q = 2 To WkSh_Q.Cells(Rows.Count, 1).End(xlUp).Row
If Not MyDict.exists(Trim$(WkSh_Q.Range("A" & lZeile_Q).Value)) Then
MyDict(Trim$(WkSh_Q.Range("A" & lZeile_Q).Value)) = 0
GoSub Datum_uebergeben
End If
Next lZeile_Q
Application.ScreenUpdating = True
Set MyDict = Nothing
Set WkSh_Q = Nothing
Set WkSh_Z = Nothing
Exit Sub
Datum_uebergeben:
With WkSh_Q.Columns(1)
Set rZelle = .Find(What:=WkSh_Q.Range("A" & lZeile_Q).Value, LookAt:=xlWhole, LookIn:= _
xlValues)
If Not rZelle Is Nothing Then
sFundst = rZelle.Address
lZeile_Z = lZeile_Z + 1
WkSh_Z.Range("A" & lZeile_Z).Value = WkSh_Q.Range("A" & lZeile_Q).Value
iSpalte = 2
Do
WkSh_Z.Cells(lZeile_Z, iSpalte).Value = WkSh_Q.Range("B" & rZelle.Row).Value
iSpalte = iSpalte + 1
Set rZelle = .Cells.FindNext(rZelle)
Loop While Not rZelle Is Nothing And rZelle.Address  sFundst
'Else
'  MsgBox "Der gesuchte Begriff  """ & .Range("A" & lZeile).Value & """  wurde nicht  _
gefunden.", _
48, "   Hinweis für " & Application.UserName
End If
End With
Return
End Sub
Gruß Peter
Anzeige
AW: Problem bei einer Abfrage
16.04.2017 22:28:33
Peter
Hallo Hans-Jörg,
offensichtlich sind doch aller guten Dinge drei und du solltest diese Version als die gültige ansehen
Option Explicit
Public Sub Find_Methode()
Dim MyDict    As Object
Dim WkSh_Q    As Worksheet
Dim WkSh_Z    As Worksheet
Dim lZeile_Q  As Long
Dim lZeile_Z  As Long
Dim rZelle    As Range
Dim sFundst   As String
Dim iSpalte   As Integer
Set MyDict = CreateObject("Scripting.Dictionary")
Application.ScreenUpdating = False
Set WkSh_Q = ThisWorkbook.Worksheets("Matrix")
Set WkSh_Z = ThisWorkbook.Worksheets("Ausgabe")
With WkSh_Z
.Range("A2:E" & .Cells(.Rows.Count, 1).End(xlUp).Row).ClearContents
End With
lZeile_Z = 1
For lZeile_Q = 2 To WkSh_Q.Cells(Rows.Count, 1).End(xlUp).Row
If Not MyDict.exists(Trim$(WkSh_Q.Range("A" & lZeile_Q).Value)) Then
MyDict(Trim$(WkSh_Q.Range("A" & lZeile_Q).Value)) = 0
With WkSh_Q.Columns(1)
Set rZelle = .Find(What:=.Range("A" & lZeile_Q).Value, LookAt:=xlWhole, LookIn:=xlValues)
If Not rZelle Is Nothing Then
sFundst = rZelle.Address
lZeile_Z = lZeile_Z + 1
WkSh_Z.Range("A" & lZeile_Z).Value = WkSh_Q.Range("A" & lZeile_Q).Value
iSpalte = 2
Do
WkSh_Z.Cells(lZeile_Z, iSpalte).Value = WkSh_Q.Range("B" & rZelle.Row).Value
iSpalte = iSpalte + 1
'Set rZelle = .FindNext(rZelle)
Set rZelle = .Cells.FindNext(rZelle)
Loop While Not rZelle Is Nothing And rZelle.Address  sFundst
'Else
'  MsgBox "Der gesuchte Begriff  """ & .Range("A" & lZeile).Value & """  wurde nicht  _
gefunden.", _
48, "   Hinweis für " & Application.UserName
End If
End With
End If
Next lZeile_Q
Application.ScreenUpdating = True
Set MyDict = Nothing
Set WkSh_Q = Nothing
Set WkSh_Z = Nothing
End Sub

Gruß Peter
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige