Clever-Excel-Forum

Normale Version: Welche Methode um Range zu finden?
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo liebe Excel-Gemeine,

in meiner Beispieldatei möchte ich
die den range(cells (9,1),cells (letztezeile, 1))   
nach dem Datum in cells(1,1) durchsuchen.
Das Datum kann mehrfach vorkommen, aber immer
im Block.

Im Anschluss möchte ich die Werte 1 bis 3 nach dem
gesuchten Datum mit Application.WorksheetFunction.Sum

Bisher mach ich das mit einer For-Schleife, die die erste
und letzte Zeile des Bereiches findet.

Gibt es hierfür eine andere Lösung?
Vielleicht .Find oder -Application.Match?

Danke für Eure Antworten.

Gruß

tmessers
Hallo,

warum nicht mit Formel?
Code:
=SUMMENPRODUKT((A9:A24=A1)*C9:E24)

Gruß Werner
Hallo Werner,

das ist nicht das einzige Makro innerhalb des Moduls.
Ich möchte nicht Makros und Formeln mischen.
Hallo,

dann schreib dir halt die Formel per Makro in die Zielzelle und ersetzte anschließend die Formel durch ihren Wert.
Code:
Range("K1").FormulaLocal="=SUMMENPRODUKT((A9:A24=A1)*C9:E24)"
Range("K1").Value = Range("K1").Value

Gruß Werner
Hallo,

vielleicht auch
Sub abc()
With Range(Cells(9, 1), Cells(Rows.Count, 1).End(xlUp)).Resize(, 5)
MsgBox Evaluate("=SumProduct((" & .Columns(1).Address & "=$A$1)*" & .Columns(3).Resize(, 3).Address & ")")
End With
End Sub
Gruß Uwe
Hallo,

Eine Vba Lösung könnte so aussehen:

Code:
Sub summe_aus_bestimmtem_datum()
   Dim letzteZeile As Long
   Dim ersteDatumsZeile
   Dim letzteDatumsZeile
   Dim suchBereich As Range
   Dim suchWert As Long
   
   letzteZeile = Cells(Rows.Count, 1).End(xlUp).Row
   Set suchBereich = Range(Cells(9, 1), Cells(letzteZeile, 1))
   suchWert = CDate(Cells(1, 1).Value)
   
   ersteDatumsZeile = Application.Match(suchWert, suchBereich, 0)
   letzteDatumsZeile = Application.Match(suchWert, suchBereich, 1)
   
   On Error GoTo fehler
   Range(Cells(ersteDatumsZeile + 8, 3), Cells(letzteDatumsZeile + 8, 5)).Select 'diese Zeile nur zum Testen und Prüfen , damit man sieht ob der Code richtig arbeitet
   Cells(1, 2) = Application.Sum(Range(Cells(ersteDatumsZeile + 8, 3), Cells(letzteDatumsZeile + 8, 5)))

fehler:
   If Err.Number > 0 Then MsgBox "Das angegebene Datum wurde nicht gefunden."
End Sub