Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1572to1576
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Formel erweitern über VBA

Formel erweitern über VBA
10.08.2017 09:36:55
Berndt
hallo zusammen,
mein Makro fügt bei Bedarf neue Zeilen ein. Wenn eine neue Zeile eingefügt wird, so wird auch meine Summenformel neu angepasst.
Nun habe ich eine zweite Formel, die ich nun bei einer neuen Zeile ebenfalls anpassen möchte.
Nur daran scheitere ich gerade.
Excel Formel für Zelle F6:
  • =SUMMENPRODUKT(($C$12:$C12=$C$6)*($D$12:$D12="KW "&KÜRZEN((HEUTE()-DATUM(JAHR(HEUTE()+3-REST(HEUTE()-2;7));1;REST(HEUTE()-2; 7)-9) )/7))*($F$12:$F12))/SUMME($F$12:F12)

  • in VBA übersetzt:
  • Range("F6").FormulaR1C1 = "=SUMPRODUCT((R12C3:R[6]C3=R6C3)*(R12C4:R[6]C4=""KW ""&TRUNC((TODAY()-DATE(YEAR(TODAY()+3-MOD(TODAY()-2,7)),1,MOD(TODAY()-2, 7)-9) )/7))*(R12C6:R[6]C6))/SUM(R12C6:R[6]C)"

  • mit einer neuen Zeile soll nun der Fett markierte Bereich in der obigen EXcel Formel um 1 erweitert werden.
    aus $C12 wird z.B. $C13.
    Ich hoffe ihr könnt mir helfen.
    Danke und Grüße
    Berndt

    11
    Beiträge zum Forumthread
    Beiträge zu diesem Forumthread

    Betreff
    Datum
    Anwender
    Anzeige
    Das steckt
    10.08.2017 10:02:24
    lupo1
    
    Range("F6:F7").Filldown            'Kopiere die Formel in F7 ...
    Range("F7").Cut: Range("F6").Paste '... und versetze sie zurück nach F6
    

    AW: Formel erweitern über VBA
    10.08.2017 10:02:53
    ChrisL
    Hi Berndt
    Vielleicht wäre eine Möglichkeit der Zelle einen Namen zu vergeben z.B.
    =SUMME($F$12:EinName)
    Ansonsten wüsste ich aufgrund deiner Beschreibung nicht, wie zu erkennen wäre, wo sich die relevanten Zellen gerade befinden.
    cu
    Chris
    AW: Formel erweitern über VBA
    10.08.2017 10:21:32
    Rainer
    Hallo Berndt,
    du kannst die Bereiche auch über INDEX() zuweisen, z.B.
    
    =SUMME($C$12:$C20)
    

    ist gleich wie
    
    =SUMME(index(C:C,12):index(C:C,20))
    
    anstelle der Angabe der Zeilennummer in der INDEX Formel kannst du eine Zelle oder Variable eingeben. Dein Makro muss dann nur zählen, wieviele Zeilen es eingefügt hat und die zweite INDEX Formel anpassen (da wo im Beispiel "20" steht)
    Gruß,
    Rainer
    Anzeige
    vll. hilft das
    10.08.2017 13:06:11
    Berndt
    Vll. habe ich mich auch etwas kompliziert ausgedrückt.
    Deswegen mal eine Bsp.-Datei:
    https://www.herber.de/bbs/user/115371.xlsm
    betätigt einmal den Button "neue Aufgabe/... einfügen" und wählt dann A und OK.
    Eine neue Zeile wird durch Makro eingeführt.
    aber die Formeln in z.B. F6 werden nicht erweitert.
    Grüße
    Berndt
    Ein ZellBezug in einer Fml wird nur genau dann ...
    10.08.2017 20:05:17
    Luc:-?
    …automatisch von Xl erweitert, Bendt,
    wenn es sich dabei …
    1. um einen echten Bezug, keinen AdressText, oder seinen Namen handelt (ebenfalls nicht als Text);
    2. eingefügte Zeilen oder Spalten zwischen der erst- und der letztgenannten eingefügt wdn.
    In allen anderen Fällen wird der Bezug nicht erweitert, es sei denn, es handelte sich um Zeilen oder Spalten einer definierten Tabelle. Ein benannter Bereich sollte also von derartiger Größe sein, dass Einfügungen immer innerhalb seiner Grenzen erfolgen → ggf (geschützte) Leerzeilen/-spalten vorsehen!
    Gruß, Luc :-?
    Besser informiert mit …
    Anzeige
    aber...
    11.08.2017 11:38:34
    Berndt
    ...warum funktioniert die Bsp. Datei dann mit der Erweiterung der ebenfalls enthaltenen Summenformel.
    Diese wird nämlich gemäß Makro erweitert.
    Ich habe versucht die jetztige Formel genau wie die eben gesagte ins Makro einzubinden. Nur dies will anscheinend nicht funktionieren.
    GRuß Berndt
    AW: aber...
    12.08.2017 16:47:27
    fcs
    Hallo Bernd,
    man muss die Zeile in den Formeln im Bereich F6:J8 hier mit einem absoluten Bezug einbauen, d.h. die Zeile muss erst berechnet werden.
    Bei der Summenformel für die KW funktioniert es nur, wenn auch eine Tätigkeit in Spalte B eingetragen wurde, ansonsten gibt es Formel/Werte-Chaos.
    Die Summenzeile kann man z.B. ermitteln, indem man in Spalte B nach "Problemspeicher" sucht und dann 2 abzieht.
    Alternativ ginge auch eine Suche in Spalte K nach "*Summe aktuelle KW".
    Gruß
    Franz
    Private Sub CommandButton2_Click()
    ' neue Zeile einfügen für Aufgabe oder Problem
    Dim EZ As Double
    Dim Ab As Double
    Dim WoEinf As String
    Dim ZL As Long
    Application.ScreenUpdating = False
    WoEinf = InputBox("(A)ufgabe" & vbLf & "(P)roblem", _
    "Wo möchten Sie eine neue Zeile hinzufügen?", "A")
    Select Case UCase(WoEinf)
    Case "A"
    EZ = UF_neueZeile(12, True) '8
    'Zeile mit Summenzeile
    ZL = Range("B:B").Find(What:="Problemspeicher", LookIn:=xlValues, _
    lookat:=xlPart).Row - 2
    'Summenformeln für aktuelle KW
    Range("F" & ZL & ":J" & ZL).FormulaR1C1 = _
    "=SUMPRODUCT(((R12C4:R[-1]C4=""KW ""&TRUNC((TODAY()-DATE(YEAR(TODAY()+" _
    & "3-MOD(TODAY()-2,7)),1,MOD(TODAY()-2, 7)-9) )/7))+(R12C4:R[-1]C4=""""))" _
    & "*(R12C:R[-1]C))"
    'Zeile oberhalb Summenzeile
    ZL = ZL - 1
    'Summenformeln für Cluster
    Range("F6:J8").FormulaR1C1 = _
    "=IFERROR(SUMPRODUCT((R12C3:R" & ZL & "C3=RC3)*(R12C4:R" & ZL _
    & "C4=""KW ""&TRUNC((TODAY()-DATE(YEAR(TODAY()+3-MOD(TODAY()-2,7)),1," _
    & "MOD(TODAY()-2, 7)-9) )/7))*(R12C:R" & ZL & "C))/SUM(R12C:R" & ZL & "C),0)"
    Cells(EZ, 2).Select
    Case "P"
    'Text:  Problemspeicher nach unten suchen
    EZ = Cells(12, 2).End(xlDown).Row '8
    If Trim(Cells(EZ, 2)) = "Problemspeicher" Then
    'Es wurden noch keine Aufgaben eingetragen
    EZ = UF_neueZeile(EZ + 1, True)
    Cells(EZ, 2).Select
    Else
    EZ = Cells(EZ, 2).End(xlDown).Row
    If Trim(Cells(EZ, 2)) = "Problemspeicher" Then
    EZ = UF_neueZeile(EZ + 1, True)
    Cells(EZ, 2).Select
    Else
    MsgBox "Kann Text: -Problemspeicher- nicht finden"
    End If
    End If
    Case Else
    '            Exit Sub
    End Select
    Application.ScreenUpdating = True
    End Sub
    

    Anzeige
    Tausend Dank
    14.08.2017 09:19:24
    Berndt
    Ich danke dir vielmals für deine Hilfe.
    Deine Version des Makros ist ja noch viel besser als gedacht.
    GLG
    Berndt
    AW: Tausend Dank
    14.08.2017 12:29:56
    fcs
    Hallo bernd,
    danke für die Rückmeldung.
    Ja, da hab ich mir die Mühe gemacht, die Formel in F6 so mit absoluten und relativen Bezügen für die Zeilen/Spalten aufzubauen, dass sie nach rechts und nach unten kopiert werden kann.
    So kann dann die Formel im Makro dann in einer Anweisung in den Bereich F6:J8 eingefügt werden.
    Gruß
    Franz
    ich sehe gerade...
    15.08.2017 16:14:05
    Berndt
    ...beim test des Makros folgendes:
                  'Summenformeln für Cluster
    Range("F6:J8").FormulaR1C1 = _
    "=IFERROR(SUMPRODUCT((R12C3:R" & ZL & "C3=RC3)*(R12C4:R" & ZL _
    & "C4=""KW ""&TRUNC((TODAY()-DATE(YEAR(TODAY()+3-MOD(TODAY()-2,7)),1," _
    & "MOD(TODAY()-2, 7)-9) )/7))*(R12C:R" & ZL & "C))/SUM(R12C:R" & ZL & "C),0)"
    
    im Fett markierten Bereich wird mir das ermittelte Ergebnis durch die gesamtsumme ausgeworfen. Sozusagen ein Mittelwert.
    Allerdings sollte auch hier nur die Summe verwendet werdern, welche die aktuelle KW besitzt.
    Kann man da statt SUM noch SUMPRODUCT einbauen?
    VG Berndt
    Anzeige
    Habs
    15.08.2017 16:41:33
    Berndt
    ich habe es selbständig gelöst. Danke nochmals.
                'Summenformeln für Cluster
    Range("F6:J8").FormulaR1C1 = _
    "=IFERROR(SUMPRODUCT((R12C3:R" & ZL & "C3=RC3)*(R12C4:R" & ZL _
    & "C4=""KW ""&TRUNC((TODAY()-DATE(YEAR(TODAY()+3-MOD(TODAY()-2,7)),1," _
    & "MOD(TODAY()-2, 7)-9) )/7))*(R12C:R" & ZL & "C))/SUMPRODUCT((R12C4:R" & ZL _
    & "C4=""KW ""&TRUNC((TODAY()-DATE(YEAR(TODAY()+3-MOD(TODAY()-2,7)),1," _
    & "MOD(TODAY()-2, 7)-9) )/7))*(R12C:R" & ZL & "C)),0)"
    

    Links zu Excel-Dialogen

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige