Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1108to1112
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

VBA Find-Methode erweitern

VBA Find-Methode erweitern
Dirk
Guten Morgen allerseits,
habe da ein Problem wo ich nicht weiter komme ...
... und hoffe auf EURE Hilfe !?
Also...
ich habe ein funktionierendes Makro (siehe unten) welches mir Daten aus TB GeBereiche nach TB Datenblatt ausgibt.
Jetzt muss ich dieses Makro aber um ein weiteres Kriterium (Datumsabfrage) erweitern ... und hier scheitere ich kläglich!
So als Leihe gesprochen...
Suche in TB GeBereiche den Eintrag aus TB Datenblatt, Spalte E (kann auch mehrfach vorkommen! Bei einem Treffer soll das Datum aus TB Datenblatt, Spalte D mit dem Datum aus dem TB GeBereiche, Spalte G verglichen werden!
Jetzt soll der Inhalt aus TB GeBereiche, Spalte C mit dem nächst größeren Datum übernommen werden!
Ich kann leider keine Demo anhängen, sorry!!! ...
... aber ich hoffe ich habe mich verständlich genug ausgedrückt?!
Schon mal vielen Dank für EURE Unterstützung!
Gruß Dirk
Option Explicit Sub Sverweis() Dim i As Long Dim wsdaten As Worksheet Dim wsGeBe As Worksheet Dim searchRange As Range Set wsdaten = Sheets("Datenblatt") Set wsGeBe = Sheets("GeBereiche") With wsdaten For i = 2 To .Cells(Rows.Count, 5).End(xlUp).Row Set searchRange = wsGeBe.Columns(1).Find(.Cells(i, 5).Value, lookat:=xlWhole) If Not searchRange Is Nothing Then 'wenn was gefunden wurde .Cells(i, 6).Value = searchRange(1, 3) 'nimm den wert der 3ten Spalte in der Matrix Else .Cells(i, 6).Value = "nicht vorhanden" 'wenn nichts gefunden wurde Meldung ausgeben End If Next End With End Sub Datenblatt

 DEF
214.10.2009P10P10_31.12.9999
301.11.2009P10P10_31.12.9999
401.01.2008P10P10_30.06.2009


GeBereiche

 ABCDEFG
12P10aaaP10_31.12.999912331.12.9999
13P10aaaP10_30.06.200912330.06.2009


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
AW: VBA Find-Methode erweitern
15.10.2009 10:47:35
Peter
Hallo Dirk,
versuch es so, nachdem Du meine Kommentar-Stellen mit den richtigen Daten versorgt hast.
Es ist zwar ungetestet, sollte es aber tun.
Option Explicit
Sub Sverweis()
Dim lZeile       As Long
Dim wsdaten      As Worksheet
Dim wsGeBe       As Worksheet
Dim searchRange  As Range
Dim sFundst      As String
Dim dDatum       As Date      ' das nächstgrößere Datum
Dim lSpeiDiff    As Long      ' die gespeichert = kleinste Differenz
Dim lrechDiff    As Long      ' die errechnete Differenz
Application.ScreenUpdating = False
Set wsdaten = Sheets("Datenblatt")
Set wsGeBe = Sheets("GeBereiche")
With wsdaten
lSpeiDiff = 99999
For lZeile = 2 To .Cells(Rows.Count, 5).End(xlUp).Row
Set searchRange = wsGeBe.Columns(1).Find(.Cells(lZeile, 5).Value, LookAt:=xlWhole)
If Not searchRange Is Nothing Then ' wenn was gefunden wurde
sFundst = searchRange.Address
Do
'              die Datums-Differenz beider Datums ermitteln
'              If RechDiff  sFundst
Else
.Cells(lZeile, 6).Value = "nicht vorhanden" ' wenn nichts gefunden wurde Meldung  _
ausgeben
End If
Next lZeile
End With
Application.ScreenUpdating = True
End Sub

Gruß Peter
Anzeige
AW: VBA Find-Methode erweitern
15.10.2009 11:18:04
Dirk
Hallo Peter,
Danke für deine Unterstützung!
Es läuft leider noch nicht richtig, er zeigt mir immer den Wert des größten Datums an!
Bei der Konstellation P10 und 01.01.2008 in TB Datenblatt muss als Ergebnis P10_30.06.2009 erscheinen, da das nächst höhere Datum 30.06.2009 ist!
Kannst du da bitte noch mal schaun?!
Vielen Dank
Gruß Dirk
AW: VBA Find-Methode erweitern
15.10.2009 12:47:07
Peter
Hallo Dirk,
wo soll ich da schauen, ich sehe Dein Makro und Deine Tabellenblätter nicht.
Gruß Peter
OK! jetzt mit Beispielmappe
15.10.2009 13:06:28
Dirk
Hallo Peter,
hast ja recht! Ohne Demo geht es nicht!
Danke nochmal für deine Unterstützung!
Gruß Dirk

Die Datei https://www.herber.de/bbs/user/65100.xls wurde aus Datenschutzgründen gelöscht


Anzeige
leider noch nicht
15.10.2009 15:35:01
Dirk
Hallo Peter,
es funktiniert leider noch nicht so wie es soll.
Habe noch mal SOLL mit IST dargestellt.
Hast du noch Lust und Zeit mir zu helfen?! Ich kapier es nicht!
Vielen Dank
Gruß Dirk
Datenblatt

 DEFGH
1DatumGeBeSOLLISTBegründung
214.10.2009P10P10_31.12.9999P10_30.06.200914.10.09 ist größer als 30.06.09 und kleiner als 31.12.9999 daher P10_31.12.9999
301.11.2009P10P10_31.12.9999P10_30.06.200901.11.2009 ist größer als 30.06.09 und kleiner als 31.12.9999 daher 31.12.9999
401.01.2008P10P10_31.03.2009P10_31.03.200901.01.2008 ist kleiner als das kleinste Datum für P10 31.03.2009 daher P10_31.03.2009
515.04.2009P10P10_30.06.2009P10_31.03.200915.04.2009 ist größer als 31.03.09 und kleiner als 30.06.2009 daher P10_30.06.2009
6     
7    Das Datim in TB GeBereiche gibt die Gültigkeit bis zum Datum x an!


GeBereiche

 ABCDEFG
2P10aaaP10_31.12.999912331.12.9999
3P10aaaP10_30.06.200912330.06.2009
4P10aaaP10_31.03.200912331.03.2009
5P11bP11_30.06.200912330.06.2009
6P12cP12_30.06.200912330.06.2009
7P12cP12_31.12.999912331.12.9999


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
Anzeige
AW: leider noch nicht
15.10.2009 18:12:56
Peter
Hallo Dirk,
der 14.10.2009 ist kleiner als der 31.12.9999 aber der Abstand zum 30.06.2009 ist kleiner als der Abstand zum 31.03.2009. Deshalb müsste, so meine ich, der 30.06.2009 das richtige Datum sein.
Gruß Peter
der Abstand ist nicht relevant!
16.10.2009 08:26:38
Dirk
Guten Morgen Peter,
es geht um Gültigkeiten in einem Zeitraum, da ist der Abstand der einzellnen Datumswerte nicht wichtig!
Wichtig ist die GÜLTIGKEIT bis wann ein Werte AKTIV ist!!
Beispiel von Oben: 14.10.2009
TB GeBereiche:
Das Datum in Spalte G gibt die Gültigkeit vom Werte aus Spalte A bis zum Datum x an!
P10 Gültig bis 31.12.9999 also aktuell
P10 Gültig bis 30.06.2009 (Der Wert aus Spalte C ist bis zum 30.06.2009 BEGRENZT !, Ab dem 01.07.2009 beginnt eine NEUE Gültigkeit!
P10 Gültig bis 31.03.2009 (Der Wert aus Spalte C ist bis zum 31.03.2009 BEGRENZT ! Ab dem 01.04.2009 beginnt eine NEUE Gültigkeit!
... usw.
Wenn das Datum aus TB Datenblatt der 14.10.2009 ist, so kann es nicht der 30.06.2009 sein, da dieses Datum bereits verfallen ist!
Das Folgedatum (Gültigkeit vom 01.07.2009 bis 31.12.9999) ist in diesem Fall der 31.12.9999
Ich hoffe ich habe die Situation jetzt ausfürlich beschrieben?!
Kannst DU / IHR mir weiterhelfen?!!
Vielen Dank!
Gruß Dirk
Anzeige
Frage ist noch offen
16.10.2009 08:27:21
Dirk
Gruß Dirk
Hilfe! Hat denn keiner eine Idee ...
16.10.2009 12:36:04
Dirk
Hallo Zusammen,
... zu meinem Problem!
Würde mich über eine Rückmeldung sehr freuen!
vielen Dank
Gruß Dirk
AW: Hilfe! Hat denn keiner eine Idee ...
16.10.2009 16:55:33
Peter
Hallo Dirk,
ich hoffe, dass ich jetzt verstanden habe, wie es gewertet werden soll.
Ich gebe zum Test meine Werte immer noch in Spalte G aus.
https://www.herber.de/bbs/user/65141.xls
Gruß Peter
vielen Dank!
16.10.2009 17:42:07
Mücke
Hallo Peter,
was soll ich sagen?!
Tabelle1

 A
1Danke! Danke! Danke! Danke! Danke! Danke! Danke! Danke! Danke! Danke!

Formeln der Tabelle
ZelleFormel
A1=WIEDERHOLEN("Danke! ";10)


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
Ich hatte die Hoffnung schon fast aufgegeben!!
Das Ergebnis ist (nach den ersten Tests) so wie es sein soll!!!
Wünsche DIR noch ein schönes Wochenende !!
Nochmals Danke!
Gruß Dirk
Anzeige

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige