Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Formel in VBA





Frage

Hallo, ich habe eine Datei in der ich eigentlich pro zeile immer die gleich Formeln habe. Also ich habe in Spalte A und B feste Werte die ich eingepflegt habe. ich will die Formeln die von Spalte C bis L sind als Makro haben und das es nur berechnet wird wenn ich das Makro laufen lasse. Wie würde das kürzeste Makro dafür ausschauen? Und gibt es auch ne Möglichkeit das das Makro von Zeile 2 bis 10 geht und dan wieder von 12 bis 20 usw.? Danke

Antwort 1 von JoeKe

Hallo Fragenkatalog,

da ich nicht weiß welche Formeln du eingetragen haben möchtest, hier mal ein Beispiel:

Sub formeln()
Dim row As Long, letzteRow As Long
row = 2
letzteRow = Cells.SpecialCells(xlCellTypeLastCell).row
Do Until row = letzteRow + 1
Cells(row, 3) = Application.WorksheetFunction.Sum(Cells(row, 1), Cells(row, 2))
Cells(row, 4) = Application.WorksheetFunction.Max(Cells(row, 1), Cells(row, 2))
Cells(row, 5) = Application.WorksheetFunction.Min(Cells(row, 1), Cells(row, 2))
Cells(row, 6) = Application.WorksheetFunction.Product(Cells(row, 1), Cells(row, 2))
Cells(row, 7) = Application.WorksheetFunction.Median(Cells(row, 1), Cells(row, 2))
row = row + 1
If Right(row, 1) = 1 And Cells(row, 1).Value <> "" Then
row = row + 1
End If
Loop
End Sub



In dem Beispiel wird:
    in Spalte C die Summe
    in Spalte D das Maximum
    in Spalte E das Minimum
    in Spalte F das Produkt
    in Spalte G der Mittelwert

Der Spalten A +B berechnet.
Die Zeilen 11,21,31 usw. werden ausgelassen.

MfG

JöKe

Antwort 2 von Fragenkatalog

Danke Jöke,

ich brauche eigentlich zwei Makros.
Das erste soll eigentlich in Spalte F von F2 bis Fx diese Formel durchführen. =WENN(ZÄHLENWENN(C$2:C2;C2)=1;1;)
Und Fx ist die letzte Zeile die befüllt ist.


Das zweite Makro brauch ich damit es von den Spalten C bis L angefangen von Zeile eine Summenproduktformel [ z.b.] =SUMMENPRODUKT((Datenbank!$A$2:$A$65536=Ergebnis!$A$1)*(Datenbank!$B$2:$B$65536=Ergebnis!B8)*(Datenbank!$F$2:$F$65536)) für Spalte C kopiert.
Die Schwierigkeit ist wieder, dass die Formel z.b. In C2 vorkommen soll und dann wieder erst in C5:C14 stehen. in C15 ist eine summe über C5bis C14 dann eine leerzeile.

Dann geht es nach dem gewohnten Muster (C17bis C26 und C27=summe) usw. bis C183.

Kann man da ein Makro machen, dass das alles berücksichtig? also nur in den Spalten und Zeilen summenproduktformel berechnet?

Danke

Antwort 3 von JoeKe

Hallo Fragenkatalog,

machbar ist das bestimmt.

Das erste Makro könnte nach deinen Vorgaben so aussehen:

Sub formeln1()
Dim row As Long, letzteRow As Long
Columns(6).ClearContents
row = 2
letzteRow = Cells(Rows.Count, 3).End(xlUp).row
Do Until row = letzteRow + 1
If Application.WorksheetFunction.CountIf(Range(Cells(2, 3), _
Cells(row, 3)), Cells(row, 3)) = 1 Then
Cells(row, 6) = 1
End If
row = row + 1
Loop
End Sub


Für den zweiten Teil fehlt mir leider im Moment der richtige Durchblick.
So wie ich das bis jetzt verstehe, hast du 2 Tabellenblätter (Datenbank und Ergebnis). Du willst auf dem Blatt "Datenbank" mit 3 Bedingungen zählen. Die Bedingungen befinden sich auf dem Blatt "Ergebnis". Und die Formel soll nur in bestimmte Zeilen berechnen.
Was ich nicht verstehe:
    Welche Zellen/Bereich sollen absolut und welche relativ sein?
    Wie lautet die dritte Bedingung?
    *(Datenbank!$F$2:$F$65536=?

    Sollen die beiden Formeln auf dem selben Blatt eingetragen werden? Die erste Formel bezieht sich auf die Spalte C in der dann mit der zweiten Formel etwas berechnet werden soll.


Wäre es dir eventuell möglich, mir eine Musterdatei zu schicken?

MfG

JöKe

Antwort 4 von Fragenkatalog

ja ist es wohin soll ich die denn schicken?

Antwort 5 von JoeKe

jkemmesies@arcor.de

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: