Microsoft Excel

Herbers Excel/VBA-Archiv

Formeln erweitern


Betrifft: Formeln erweitern von: stef26
Geschrieben am: 24.09.2017 07:57:33

Guten Morgen,
ich hab da mal ne Frage.
Ich hab eine Tabelle (Archiv) in der steht in der Zelle F2 & G2 eine Matrixformel.
In Spalte A wird das Datum eingetragen. Jeden Tag kommen mehrere Einträge hinzu.
Da die Liste extrem groß ist wandle ich in der Tabelle die Formeln nach der Berechnung in Werte um.
Dies möchte ich nun versuchen per Makro machen zu lassen.
Dazu müsste das Makro folgendes ausführen.

a) Kopiere die Formel aus F2 und G2
b) Füge diese in jede Zelle (F & G) die in der Spalte A das Datum heute -15 Tage bis heute ein
c) lasse berechnen
d) wandle die Formeln aus diesem Bereich wieder in Werte um

Leider ist mein VBA nicht so gut, dass ich das auf die Reihe bekommen würde und ich hoffe, dass mir hier jemand unter die Arme greifen kann.

Liebe Grüße
Stefan

  

Betrifft: zeich doch ma von: lupo1
Geschrieben am: 24.09.2017 08:04:12

Da die Formeln also schon umgewandelt sind und nur noch deren Vorlage benötigt wird, würde ich an Deiner Stelle, wenn die (Eingabe)-Datensätze die Spalten A:K füllen, ein Change-Ereignis auf die Spalte K legen und damit die Formel als Wert nach jedem Satz einsetzen.

Benötigst Du das Formelergebnis nicht sofort, und nervt Dich eine auch dann noch mögliche Neuberechnungsdauer, selbst wenn es nur eine Formel ist, kannst Du dieses Prozedere auch manualisieren.

Eine Tabelle (kein Bild, keine Fremdverlinkung außerhalb des Forums) mit Wunschergebnis (also welche Formel in welche Spalte) wäre dafür hilfreich.


  

Betrifft: AW: zeich doch ma von: stef26
Geschrieben am: 24.09.2017 08:58:55

Hallo Lupo1,
danke für deine Rückmeldung.
Ich hab mal die Tabelle reingehängt.

https://www.herber.de/bbs/user/116467.xlsx

Allerdings musste ich viele Daten löschen und Formeln verändern, da die Formeln auf mehrere andere Tabellenblätter zugreifen. Die Formel in Zelle F2 und G2 stimmt so nun nicht mehr. Dürfte aber nicht wichtig sein.
Was dringend notwendig ist die Schritte a - d zu machen da sich das Formelergebnis der letzten 15 Tage nochmals ändern kann.



Gruß
Stefan


  

Betrifft: Kann man wenig mit anfangen ... von: lupo1
Geschrieben am: 24.09.2017 13:37:18

- mangelnde Wunschergebnisse. Oder nicht gekennzeichnet, welches diese sind.


  

Betrifft: AW: Kanns nicht besser erklären von: stef26
Geschrieben am: 24.09.2017 15:56:23

Hallo Lupo1,
ich weiß nicht wie ich es anders erklären soll.

Das Makro soll folgendes durchführen:
a) in der Zelle F2 und G2 befinden sich Formeln (in der Beispieldatei abgeändert)
b) Nun soll in Spalte F & G diese Formeln kopiert werden. Aber nur in diesen Zellen, in denen in Spalte A das heutige Datum minus 15 Tage bis zum heutigen Datum.
(da sich das Ergebnis in den letzten 15 Tagen immer noch anpassen kann)
c) Berechnen lassen
d) Formeln in Werte umwandeln lassen

Eigentlich bräuchte ich nur b), da ich C) und d) selbst hinbekommen sollte

Gruß
Stefan


  

Betrifft: Ein Versuch von: lupo1
Geschrieben am: 24.09.2017 16:47:36

... das Formel-Kopieren klappt irgendwie nicht (Zeile 3 und 5). Vielleicht kann einer der VBA-Xperten hier helfen:

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Target.Column < 8 And WorksheetFunction.CountA(Cells(Target.Row)) > 2 Then
 For j = 4 To 7
  If j <> 5 Then Cells(Target.Row, j).FormulaR1C1 = Cells(2, j).FormulaR1C1
 Next
 Cells(Target.Row, 5).FormulaArray = Cells(2, 5).FormulaArray
End If
i = 3: j = 3
On Error Resume Next
i = WorksheetFunction.Match(Today - 16, Cells(, 1))
j = WorksheetFunction.Match(Today - 23, Cells(, 1))
j = WorksheetFunction.Max(3, j)
On Error GoTo 0
If i > 3 Then Range("A" & j & ":G" & i) = Range("A" & j & ":G" & i).Value
Application.EnableEvents = True
End Sub



  

Betrifft: AW: VBA Experte von: stef26
Geschrieben am: 24.09.2017 17:22:02

Danke Lupo für den Versuch.
Ich hab keinen Plan was nicht geht.
Ich mach mal auf OFFEN, damit sich dass noch jemand mal ansehen kann.

Vielen Dank trotzdem
Gruß
Stefan


  

Betrifft: AW: VBA Experte von: Michael (migre)
Geschrieben am: 25.09.2017 10:10:15

Hallo!

Ich hab mal "Experte" ignoriert. Von dem, was ich bisher verstanden habe, ungetestet, für das Übertragen der Formeln aus F2:G2 in F3:Gx, wobei x gleich der letzten gefüllten Zelle in F:F entspricht:

Sub a()
    
    Dim Wb As Workbook: Set Wb = ThisWorkbook
    Dim Ws As Worksheet: Set Ws = Wb.Worksheets("Tabelle1")
    Dim Bereich As Range, Zelle As Range
    
    With Ws
        'F3:Gx, wobei x = letzte gefüllte Zelle in F:F
        Set Bereich = .Range("F3:G" & .Cells(.Rows.Count, "F").End(xlUp).Row)
        For Each Zelle In Bereich
            If CDate(.Cells(Zelle.Row, "A")) = Date - 15 Then
                Zelle.FormulaLocal = .Cells(2, Zelle.Column).FormulaLocal
                Zelle.Value = Zelle.Value
            End If
        Next Zelle
    End With
    
    Set Wb = Nothing: Set Ws = Nothing
    Set Bereich = Nothing: Set Zelle = Nothing
End Sub
Die eingetragenen Formeln werden sofort durch ihren Wert ersetzt.

LG
Michael


  

Betrifft: AW: VBA Experte von: stef26
Geschrieben am: 25.09.2017 15:46:52

Hallo Michael,
super es funktioniert so wie ich das mir gewünscht habe.

Vielen herzlichen Dank
Gruß
Stefan

P.S. du bist doch ein VBA Experte ! :-)


  

Betrifft: Freut mich, Danke für die Rückmeldung, owT von: Michael (migre)
Geschrieben am: 25.09.2017 16:27:45




Beiträge aus den Excel-Beispielen zum Thema "Formeln erweitern"