Seite 1 von 1

Funktionsaufruf über Matrixformel geht nicht

Verfasst: Di, 11.01.2011 22:43
von saxo
Hallo,
habe diese Progrämmchen zur Umformatierung von Gradangaben
z.B. aus String 10°W soll die Zahl -10 werden:
Function DEG_CHAR2NUM(x As String) As Double
If (LCase(Right(x,1)) = "w") Then
DEG_CHAR2NUM = -Val(x)
Else
DEG_CHAR2NUM = Val(x)
EndIf
End Function

Funktioniert auch wenn ich einzelne Werte umrechne. Da ich aber viele Werte habe, will ich das in eine Matrixformel schreiben und es kommt immer Laufzeitfehler. Weiss jemand warum? Datei hängt an.

Re: Funktionsaufruf über Matrixformel geht nicht

Verfasst: Mi, 12.01.2011 08:40
von Karolus
Hallo
Als Matrixformel wäre in diesem Fall nur sinnvoll hinter DEG_CHAR2NUM( eine Bereichsadresse anzugeben, zb. =DEG_CHAR2NUM(A2:A7)
-aber du brauchst das doch nicht wirklich als Matrix, es reicht doch in B2: =DEG_CHAR2NUM(A2)
und die Formel nach unten ziehen.
Nebenbei sehe ich auch keinen zwingenden Grund dazu INDIREKT und ZEILE() zu missbrauchen.

Gruß Karo

Re: Funktionsaufruf über Matrixformel geht nicht

Verfasst: Mi, 12.01.2011 09:48
von saxo
Hallo Karo,
also mit der Matrixformel {=DEG_CHAR2NUM(A6:A7)} gibt es den gleichen Laufzeitfehler.

Der einfache Versuch eine Spalte zu kopieren mit Matrixformel {=(A6:A7)} funktioniert nach mehrmaliger Eingabe, die ersten Male hat er selbständig wieder nach {=(A7:A7)} umgewandelt.

Da ich viele 100 Werte berechnen muss, dachte ich es wäre sinnvoll das mit Matrixformel zu machen.

Grüsse

Re: Funktionsaufruf über Matrixformel geht nicht

Verfasst: Mi, 12.01.2011 10:06
von Karolus
Hallo
Da ich viele 100 Werte berechnen muss, dachte ich es wäre sinnvoll das mit Matrixformel zu machen.
Nein es geht in diesem Fall nur um ein effizientes Ausfüllen eines größeren Bereichs. Das erreichst du nach Eingabe der ersten Formel leichter mit:
entweder:
  • - Doppelklick auf die rechte untere Rahmenecke der Formelzelle
oder:
  • - markieren des auzufüllenden Bereichs + → Bearbeiten → Ausfüllen → unten...
oder:
  • -kopieren der Formelzelle + einfügen in den auszufüllenden Bereich
Gruß Karo