Clever-Excel-Forum

Normale Version: VBA - Columns() in Formel einbauen?
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo Zusammen,

ich frage mich ob es eine Möglichkeit gibt ein Makro zu schreiben, dass mir eine SummeWenn Formel ausgibt bei der ich mithilfe von *i = i +1* die Spalten von links nach rechts in der Formel ändern. Den Code für die SummeWenn Formel habe ich bereits

PHP-Code:
Public Sub CommandButton1_Click()

    
Dim lastrow As Long

    lastrow 
ActiveSheet.Cells(Rows.Count"A").End(xlUp).Row 1

    i 
4
    calc 
"=SUM(SUMIF($A$2:$A$22,N3,$B$2:$B$22),"
 
   Do Until i lastrow 1
        calc 
calc "SUMIF($A$2:$A$22,N" ",$B$2:$B$22),"
 
       i 1
    Loop
    ActiveSheet
.Range("N" lastrow ":BI" lastrow 1).Value calc ")"
End Sub 

Ich frage mich nun, ob im Bereich (calc = calc & "SUMIF($A$2:$A$22,N" & i & ",$B$2:$B$22),"), das N mit irgendeiner Formel (Column(...) ) getauscht werden kann, damit der Code wenn er mit der Spalte N fertig ist in Spalte M geht? usw. bis Spalte BI. 

Im großen und ganzen funktioniert mein Code zwar so wie ich es will. Wenn ich aber die Zeilen im Bereich der Formelbezüge verschieben, verschieben sich die Bezüge mit und das sollte aber nicht sein.

Und wenn ich calc = calc & "SUMIF($A$2:$A$22,$N" & i & ",$B$2:$B$22)," schreibe, dann wird nur die Spalte N in der Formel verwendet.

Ich hoffe ich konnte mein Problem verständlich vorstellen und jemand kann mir helfen. Danke
Hi,

M ist vor N und BI ist weit nach N. Warum fängst Du mit N an?

ungetestet:



Code:
Public Sub CommandButton1_Click()

    Dim lastrow As Long
Dim i as long
dim j as long

    
lastrow = ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Row + 1
  For j = 13 To 61
    calc = "=SUM(SUMIF($A$2:$A$22," & Cells(3, j).Address & ",$B$2:$B$22),"
    For i = 4 To lastrow + 1
        calc = calc & "SUMIF($A$2:$A$22," & Cells(i, j).Address & ",$B$2:$B$22),"
    Next
    calc = calc & ")"
    Cells(lastrow + 1, j) = calc
    Next
    



End Sub
Hallo,

wieso schreibst Du die Formel nicht gleich in die Zellen? https://www.online-excel.de/excel/singsel_vba.php?f=67
Hi Steffl,

es geht immer noch um das:

http://www.clever-excel-forum.de/Thread-...-anhaengen

ich will es nicht kommentieren, ich denke, das wäre wohl eine Aufgabe für Pivot oder PQ.
Hab mich leider verschrieben. Bis BI weil die Tabelle so lang ist, es müssen 4 Jahre mit allen Monaten dargestellt werden.


Hab deine Code probiert. Funktioniert leider nicht, bzw. er wird mir jetzt keine Zahl mehr angezeigt, sondern "-".
Hi,


Zitat:Funktioniert leider nicht

kann nicht sein. Welche Formel schreibt er in die Tabelle? Überprüfe doch einfach mal das Ergebnis des Makros und kontrolliere die Formel! Ein bißchen was kannst Du auch selbst machen.
Da ich keine Tabelle habe kann ich es nicht testen und ich habe auch keine Lust dazu, mehr Zeit zu investieren.
(28.06.2018, 08:27)BoskoBiati schrieb: [ -> ]Hi,

kann nicht sein. Welche Formel schreibt er in die Tabelle? Überprüfe doch einfach mal das Ergebnis des Makros und kontrolliere die Formel! Ein bißchen was kannst Du auch selbst machen.

Kann sehr wohl sein. Er schreibt zwar genau die Formel in die Zeile die ich bräuchte, aber es wird "-" angezeigt. Frag mich nicht warum. 

Sorry dass dein Code hier nicht so funktioniert wie es soll und du jetzt beleidigt bist und das Handtuch wirfst. Zum Glück gibt es im Internet noch zahlreiche andere Foren in denen wesentlich ehrgeizigere Entwickler zu finden sind.

Grüße
Hi,

Zitat:Er schreibt zwar genau die Formel in die Zeile die ich bräuchte, aber es wird "-" angezeigt.
Sorry dass dein Code hier nicht so funktioniert wie es soll

Also funktioniert das Makro doch fehlerlos, nur Deine Formel funktioniert nicht, das Problem mußt Du selbst lösen, da keiner Deine Datei und die Daten kennt!
Und schon habe ich eine Lösung.

Ist zwar fast wie deine, aber doch mit einem kleinen aber feinen Unterschied:


Code:
i = 4
    calc = "=SUM(SUMIF($A$2:$A$22,N3,$B$2:$B$22),"
    Do Until i = lastrow + 1
        calc = calc & "SUMIF($A$2:$A$22,$" & Cells(i, 14).Address(0, 0) & ",$B$2:$B$22),"
        i = i + 1
    Loop
ActiveSheet.Range("N" & lastrow + 1 & ":BI" & lastrow + 1).Value = calc & ")"
 
Grüße
Hi,

da Du anscheinend immer noch CP betreibst, bin ich raus!
Seiten: 1 2