Werte abhängig vom Datum auswählen
Hallo,
in meinem Tabellenblatt wird in Spalte A beginnend in "A 4" das Datum eingetragen und zwar pro Tag 96 mal bis zum Monatsende in "A 2979". Zum Beispiel: A4 bis A99 steht 01.05.09, A100 bis A195 steht 02.05.09 usw. In den Spalten B bis E stehen Messwerte. Ich möchte nun am besten über ein Makro, dass bei Eingabe eines Datums z.B. 02.05.09 der Bereich A100 bis E195 ( obiges beispiel ) an eine andere Stelle des Tabellenblattes z.B. J4 bis N99 kopiert wird. Wer kann mir dabei helfen? Ich habe keine Ahnung wie man das lösen kann.
Freundliche Grüße
biggx
Antwort schreiben
Antwort 1 von coros vom 25.07.2021, 06:27 Options
Hallo biggx,
nachfolgender Code sollte das machen, was Du DIr vorstellst. Es wird ein EIngabefenster zur Datumseingabe geöffnet. Nach der Eingabe wird anhand einer Schleife das eingetragene Datum in Spalte A gesucht. Wenn gefunden, wird der Bereich des gefundenen Datums kopiert und ab Zelle J4 eingefügt.
Kopiere das Makro in ein StandardModul und starte es z.B. über eine Befehlsschaltfläche
Teste das Makro aber bitte in einer Testdatei und nicht gleich in Deiner Originaldatei.Option Explicit
Sub Finden_und_kopieren()
Dim intRow As Integer
Dim varEingabe As Variant
'Datumseingabe
varEingabe = InputBox("Bitte Suchdatum eingeben")
'Wenn eingetragenes Datum nicht einem Datumswert entspricht, Prozedur _
beenden
If IsDate(varEingabe) = False Then Exit Sub
'Schleife zum Finden des eingetragenen Datums
For intRow = 4 To ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
'Wenn eingetragenes Datum gleich dem Datum der durch die Schleife _
angesprochene Zelle dann...
If CDate(ActiveSheet.Cells(intRow, 1)) = CDate(varEingabe) Then
'...Bereich A:E des gefundenen Datumsbereichs kopieren und in _
J4 einfügen und...
With ActiveSheet
.Range(Cells(intRow, 1), Cells(intRow + 95, 5)).Copy _
.Range ("J4")
End With
'...Schleife verlassen
Exit For
End If
Next
End Sub
Solltest Du nicht wissen, wie Du den Code in Deine Datei bekommst, dann schau mal auf
meiner HP in der
Rubrik Anleitungen und dort dann in der
Anleitungsnummer 3 nach. Dort stelle ich dazu eine bebilderte Anleitung zur Verfügung, die Dir sicherlich helfen wird.
Bei Fragen melde Dich.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 2 von rainberg vom 25.07.2021, 07:22 Options
Hallo biggx,
für diesen Job wäre doch der Spezialfilter wie geschaffen.
Du legst den Filter über den Bereich A4:E2979, gibst als Kriterium das
besagte Datum ein und wählst als Filterziel die Zelle J4.
Gruß
Rainer
Antwort 3 von rainberg vom 25.07.2021, 08:11 Options
Hallo noch mal,
auch mit einer Formellösung wäre die Auswertung recht einfach zu
bewerkstelligen.
Habe mal ein Beispiel angehängt, bei dem vor den Daten eine Hilfsspalte,
mit entsprechenden Formeln, eingefügt ist.
Die Auswertung erfolgt per SVERWEIS() im gelben Bereich.
Es brauchen keinerlei Formeln geändert werden, es macht sich lediglich
die Eingabe des gewünschten Datums in der rot markierten Zelle
erforderlich.
http://www.file-upload.net/download-1787194/Tageswerte.xls.htmlGruß
Rainer
Antwort 4 von rainberg vom 25.07.2021, 09:48 Options
Hallo biggx,
dass Dir auch die Wahl so richtig schwer fällt, anbei noch die
angesprochene Spezialfilterlösung :-))
Du brauchst nur in die rote Zelle das Filterdatum eingeben und den Button
zu betätigen.
Die gefilterte Liste wird nach jedem Filteraufruf mit den richtigen Daten
überschrieben.
Die Basisliste kann nach Belieben verlängert oder verkürzt werden.
Der gelbe Kriterienbereich darf nicht verändert werden.
http://www.file-upload.net/download-
1787288/Spezialfilter_Auswert...Gruß
Rainer
Antwort 5 von fedjo vom 25.07.2021, 10:32 Options
Hallo Rainer,
dein letzter download ist defekt.
Gruß
fedjo
Antwort 7 von biggx vom 25.07.2021, 18:19 Options
Hallo Oliver und Rainer,
vielen Dank für eure Lösungen. Jetzt geht es mir schon viel besser. Die Formellösung funktionierte sofort. Das Makro markiert den gesuchten Bereich, aber kopiert ihn nicht, sondern bringt eine Fehlermeldung bei:
.Range(Cells(intRow, 1), Cells(intRow + 95, 5)).Copy _
.Range ("J4") !
Keine Ahnung warum. Trotzdem vielen Dank und ein schönes Wochenende.
Gruß Thomas