Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Welche Methode um Range zu finden?
#1
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


Angehängte Dateien
.xlsx   VBA Find_Forum.xlsx (Größe: 9,05 KB / Downloads: 7)
Antworten Top
#2
Hallo,

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

Gruß Werner
[-] Folgende(r) 1 Nutzer sagt Danke an Werner.M für diesen Beitrag:
  • tmessers
Antworten Top
#3
Hallo Werner,

das ist nicht das einzige Makro innerhalb des Moduls.
Ich möchte nicht Makros und Formeln mischen.
Antworten Top
#4
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
[-] Folgende(r) 1 Nutzer sagt Danke an Werner.M für diesen Beitrag:
  • tmessers
Antworten Top
#5
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
[-] Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:
  • tmessers
Antworten Top
#6
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
Gruß Atilla
[-] Folgende(r) 1 Nutzer sagt Danke an atilla für diesen Beitrag:
  • tmessers
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste