Makro um selektiv einen Index-Vergleich anzuwenden
25.11.2015 20:34:59
Michael
ich hatte diese Woche schonmal probiert Hilfe für mein Problem zu finden. Leider wurde der Thread jetzt zugemacht da ich nicht die Zeit gefunden habe daran zu arbeiten und ins Archiv verschoben wenn ich das richtig erkannt habe.
https://www.herber.de/forum/archiv/1460to1464/t1460222.htm#1460222
Wie vom User fcs empfohlen habe ich mal eine Beispieldatei hochgeladen in der man sehen kann was ich versuche mittels VBA zu realisieren.
In Tabelle1 werden täglich neue variable Daten kopiert. Diese sollen von dort der Tabelle2 (ich nenne sie mal "Datenbank")zugeordnet werden allerdings nur für Spalten mit dem Datum heute oder ferner in der Zukunft. Ich habe versucht mit einer Schleife Zellen zu prüfen die in den Spalten "Heute" oder ferner in der Zukunft liegen. Das funktioniert dann auch ganz gut. Nur über den darunterliegenden Bereich mittels VBA einen Index-Vergleich zu realisieren gelingt mir noch nicht so ganz. Evtl. gibt es hierfür ja auch eine viel schlauere Lösung (-:
Anbei mein Code aus dem alten Thread mit den Verbesserungsvorschlägen von fcs:
Sub CopyNewData2()
Dim zelle As Range
Dim i As Integer
Dim y As Integer
Dim varWert As Variant, Zeile As Variant, Spalte As Variant
Tabelle1.Activate
For Each zelle In Tabelle1.Range("I5:TG5")
For i = 1 To 32
For y = 1 To 700
If zelle.Value = Date - 1 + i Then
varWert = Tabelle1.Cells(zelle.Row + 5 + y, 1).Value
Zeile = Application.Match(varWert, Tabelle5.Range("A11:A709"), 0)
If Not IsError(Zeile) Then
varWert = Tabelle1.Cells(zelle.Row - 5 - y, zelle.Column).Value
Spalte = Application.Match(varWert, Tabelle5.Range("I10:AO10"), 0)
If Not IsError(Spalte) Then
Tabelle1.Cells(zelle.Row + 5 + y, zelle.Column) = _
Application.WorksheetFunction.Index( _
Tabelle5.Range("I11:AO709"), Zeile, Spalte)
End If
End If
End If
Next y
Next i
Next zelle
Tabelle5.Activate
End Sub
Die Datei https://www.herber.de/bbs/user/101807.xlsx wurde aus Datenschutzgründen gelöscht
Beste Grüße Michael