Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
624to628
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
624to628
624to628
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Funktion von VBA in excel

Funktion von VBA in excel
18.06.2005 17:37:12
VBA
Wie füge ich folgende geschriebene VBA Funktion in Excel ein.
Ich möchte diese Funktion aufrufen, wie die anderern in excel unter Funktion einfügen.
'// m is the slope and b is the intercept
Dim xi As Double, yi As Double

xi = (x0 + m * y0 - m * b) / (m ^ 2 + 1)
yi = m * xi + b

orthogonal_distance = Sqr((x0 - xi) ^ 2 + (y0 - yi) ^ 2)
End Function
Ich habe z.b in A1-A10 die Xwerte und in B1-b10 die ywerte und möchte das Ergebnis in C1 haben.

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Funktion von VBA in excel
18.06.2005 17:39:55
VBA
Sorry natürlich diese Funktion

Function regress_orthols(x, y)
Dim stat
Dim n As Long, i As Long
Dim mean_x As Double, mean_y As Double
Dim sig_x As Double, sig_y As Double
Dim u, v
Dim sum_v2 As Double, sum_u2 As Double, sum_uv As Double
Dim part1 As Double, part2 As Double, r As Double
Dim b(1 To 2)
stat = regress_ls(x, y)
n = UBound(x) - LBound(x) + 1
mean_x = Application.WorksheetFunction.Average(x)
mean_y = Application.WorksheetFunction.Average(y)
sig_x = Application.WorksheetFunction.StDev(x)
sig_y = Application.WorksheetFunction.StDev(y)
u = x
v = y
For i = LBound(x) To UBound(x)
u(i) = x(i) - mean_x
Next
For i = LBound(y) To UBound(y)
v(i) = y(i) - mean_y
Next
sum_v2 = Application.WorksheetFunction.Sum(element_mul(v, v))
sum_u2 = Application.WorksheetFunction.Sum(element_mul(u, u))
sum_uv = Application.WorksheetFunction.Sum(element_mul(u, v))
part1 = sum_v2 - sum_u2
part2 = Sqr((sum_u2 - sum_v2) ^ 2# + 4# * sum_uv * sum_uv)
b(1) = (part1 + part2) / (2# * sum_uv)
b(2) = (part1 - part2) / (2# * sum_uv)
r = sum_uv / Sqr(sum_u2 * sum_v2)
If Sgn(b(1)) = Sgn(stat(1)) Then
stat(1) = b(1)
Else
stat(1) = b(2)
End If
stat(2) = mean_y - stat(1) * mean_x
stat(3) = stat(1) * Sqr((1# - r * r) / n) / r
stat(4) = Sqr(((sig_y - sig_x * stat(1)) ^ 2) / n + (1# - r) * stat(1) * _
(2# * sig_x * sig_y + (mean_x * stat(1) * (1# + r) / (r * r))))
regress_orthols = stat
End Function

Anzeige
AW: Funktion von VBA in excel
18.06.2005 19:49:19
VBA
Hallo Thomas,
Einfach die Funktion in ein Modul einfuegen und es funktioniert... solange da auch die Funktion regress_ls irgendwo ist... ;-)
Schoene Gruesse
Stefan B.
AW: Funktion von VBA in excel
18.06.2005 19:49:32
VBA
Hallo Thomas,
Einfach die Funktion in ein Modul einfuegen und es funktioniert... solange da auch die Funktion regress_ls irgendwo ist... ;-)
Schoene Gruesse
Stefan B.
AW: Funktion von VBA in excel
19.06.2005 15:11:15
VBA
Hallo Thomas,
Deine Funktion steigt aus bei der "size" Funktion.
Ich denke das Problem ist dass Du versuchst eine Matrix Formel einzusetzen. Ich weiss nicht wie Excel Matrixformeln behandelt, wenn sie auf eigene Funktionen angewendet wird.
Wenn ich Deine Funktion teste, kriege ich einen Fehler weil Du in Deinem Code schon davon ausgehst dass Du nicht einen Wert x geliefert kriegst, sondern ein ganzes Datenfeld. Wenn der Zweck deiner Formel es notwendig macht, dass Du ein ganzes Datenfeld einliesst, wuerde ich von vornherein definieren dass eine Range an die Funktion uebergeben wird, und diese dann entsprechend auswerten.
Wie die Funktion augenblicklich arbeiten soll uebersteigt leider mein Verstaendnis von Excel...
Sorry! Schoene Gruesse
Stefan B.
Anzeige
AW: Funktion von VBA in excel
20.06.2005 08:50:47
VBA
Hi,
1. alle Funktionen aus Tabelle1 raus und in Modul1 rein, soweit noch nicht geschehen.
2. Function regress_orthols(b1 As Range, b2 As Range) (siehe Stefan, Range übergeben)
3. darin dann das Range in ein Datenfeld umwandeln:
x = Application.WorksheetFunction.Transpose(b1)
y = Application.WorksheetFunction.Transpose(b2)
(vorher Dim x,y)
4. Dann wird schonmal ein Ergebnis geliefert. Ob das Richtig ist, mußt Du prüfen. Es ist eine Matrix, der erste Wert der Matrix wird angezeigt (alle Werte kannst Du auslesen, wenn Du auf die Formel gehst, F2 und F9 drückst)
Gruss- Micha
PS: Rückmeldung wäre nett.
Anzeige
AW: Funktion von VBA in excel
20.06.2005 14:41:10
VBA
So ich habe noch das Problem mit der Definition Funktion übergeben als Range.
Wie mache ich das?
1. Modul 1 eingegefügt ok
2. Datenreihe ist zb. A1 folgende bis A100 und die zweite Reihe B1 bis B100
3. Wie übergebe ich dies als Range und wo?
AW: Funktion von VBA in excel
20.06.2005 19:13:45
VBA
Hallo
Du schreibst doch in die Zelle =regress_orthols(C2:C16;D2:D16) C2:C16 und D2:D16 sind zwei Range(s). Also schreibst Du in die Funktions- Deklaration: regress_orthols(b1 As Range, b2 As Range). Fertig. Damit kannst Du aber noch nicht rechnen, weil Deine Makros Datenfelder erwarten. Also weiter wie beschrieben mit Schritt 3.
Gruß- Micha
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige