1.5k Aufrufe
Gefragt in Tabellenkalkulation von ekg Mitglied (303 Punkte)
Hallo,

dieser Befehl füllt vorher markierte Zellen mit einer Formel:
Sub zaehlen_Erwin()
Range(Selection.Address).Formula =
"=SUMPRODUCT((R5C5:R311C5=7202)*(R[-318]C[0]:R[-12]C[0] =1))"

Jetzt soll ein anderer Befehl die nächste Formel in die Zellen darunter
eintragen.
Range(Selection.Address).Formula =
"=SUMPRODUCT((R5C5:R311C5=7202)*(R[-318]C[0]:R[-12]C[0] =2))"

Also bei der ersten Formel werden markierte Zellen gefüllt. Jetzt sollen die
Zellen die darunter sind ebenfalls (mit der nächsten Formel )gefüllt
werden.
Vieleicht mit einer Art Schleife d.h. wenn die oberer Zelle gefüllt ist soll
auch die darunter gefüllt werden.

Gruß Erwin

5 Antworten

0 Punkte
Beantwortet von hajo_zi Experte (9.1k Punkte)
Halo Erwin,

Range(Selection.Address).offset(1,0).Formula =
"=SUMPRODUCT((R5C5:R311C5=7202)*(R[-318]C[0]:R[-12]C[0] =2))"

Gruß Hajo
0 Punkte
Beantwortet von ekg Mitglied (303 Punkte)
Hallo Hajo

klappt bei einer Zeile sehr gut.
Ich möchte aber gerne das sich das eintragen auch noch in drei Zeilen
weiter unten wiederholt. Geht das auch?

Gruß Erwin
0 Punkte
Beantwortet von hajo_zi Experte (9.1k Punkte)
Hallo Erich,

ändere das 1 , in 3 ,

Gruß Hajo
0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
Hallo Erwin,

sorry, aber Du hast Dich wieder mal etwas unverständlich ausgedrückt.
Es wäre besser, Du stellst die Fragen etwas mehr im Zusammenhang und nicht immer scheibchenweise.

Falls ich Deine Formeln richtig analysiert habe, müsste auch folgender Code funktionieren.
Er schreibt in 4 untereinander liegenden Zellen einer Spalte, ab Selection, die gleiche Formel, bei der der Vergleichswert des 2. Arguments immer um 1 erhöht wird.

Wenn ich falsch liege, bitte richtig erklären und die einzutragenden Formeln in der A1-Schreibweise angeben.

Teste mal selbst.
Option Explicit

Sub test()
Range(Cells(Selection.Row, Selection.Column), Cells(Selection.Row + 3, Selection.Column)).FormulaLocal = _
"=SUMMENPRODUKT(($E$5:$E$311=7202)*($A$5:$A$311 =ZEILE(A1)))"
End Sub


Gruß
Rainer
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo Erwin,

auch von mir zwei Vorschläge:

Beispiel 1: die aktuelle Zeile wird als Suchkriterium eingetragen (entsprechend Rainers Beispiel):
Sub formeln_eintragen1()
Dim Zelle As Range

For Each Zelle In Selection
Cells(Zelle.Row, Zelle.Column).FormulaR1C1 = "=SUMPRODUCT((R5C5:R311C5=7202)*(R[-318]C[0]:R[-12]C[0] =" & Zelle.Row & "))"
Next Zelle

End Sub


Beispiel 2: als Suchkriterium wird eine Zahl ab 1 eingetragen und für jeden durchlauf um 1 erhöht (ist wohl das,
was du suchst):

Sub formeln_eintragen2()
Dim az As Long

For az = 1 To Selection.Rows.Count
Cells(Selection.Row + az - 1, Selection.Column).FormulaR1C1 = "=SUMPRODUCT((R5C5:R311C5=7202)*(R[-318]C[0]:R[-12]C[0] =" & az & "))"
Next az

End Sub


Beide Codes arbeiten alle Zeilen im selektierten Bereich ab.

Gruß

M.O.
...