Die Formel:
=DIAGONAL_MULT(0;5;5;0)
ist nur der Aufruf der benutzerdefinierten Funktion DIAGONAL_MULT().
In der Klammer müssen 4 Zahlen stehen, durch Semikolon getrennt. Diese Zahlen entsprechen (von links nach rechts):
-Spaltenindex der linken Zelle der Diagonale
-Zeilenindex der linken Zelle der Diagonale
-Spaltenindex der rechten Zelle der Diagonale
-Zeilenindex der rechten Zelle der Diagonale
Die Indexzählung beginnt bei 0,0 (entspricht Zelle A1). Für das ursprüngliche Beispiel der Diagonale A15:C17 müsste also aufgerufen werden wie folgt:
=DIAGONAL_MULT(0;14;2;16)
Gruß
Stephan
diagonale Addition/Multiplikation
Moderator: Moderatoren
Re: diagonale Addition/Multiplikation
Diese Formel habe ich selbst nur zitiert und weiß nichts weiter darüber. Die Quelle hatte ich angegeben.Wie aber stehts mit der Addition?
Ausführliche Informationen zu allen Basic-Befehlen befinden sich in der OO-Programmhilfe.Und: Könntest Du mir bitte die Makro-Befehle erläutern?
Die benutzerdefinierte Funktion enthält den Verweis auf ein bestimmtes Tabellenblatt, im Konkreten das Erste:Es lässt sich verschieben, aber dann gibt es kein Ergebnis mehr!
Code: Alles auswählen
With ThisComponent.Sheets.getByIndex(0)
Code: Alles auswählen
With ThisComponent.CurrentController.ActiveSheet
Code: Alles auswählen
Function diagonal_mult(SpalteLinkeZelle, ZeileLinkeZelle, SpalteRechteZelle, ZeileRechteZelle, Tabellenindex)
With ThisComponent.Sheets.getByIndex(Tabellenindex)
If ZeileLInkeZelle > ZeileRechteZelle Then
'von links aufwärts nach rechts
z = ZeileLinkeZelle
s = SpalteLinkeZelle
k = .getCellByPosition(s, z).Value
Do While s < SpalteRechteZelle
s = s + 1
z = z - 1
k = k * .getCellByPosition(s, z).Value
Loop
Else
'von links abwärts nach rechts
z = ZeileLinkeZelle
s = SpalteLinkeZelle
k = .getCellByPosition(s, z).Value
Do While s < SpalteRechteZelle
s = s + 1
z = z + 1
k = k * .getCellByPosition(s, z).Value
Loop
End If
End With
diagonal_mult = k
End function
=DIAGONAL_MULT(0;5;5;0;0)
Gruß
Stephan