Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1676to1680
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
Inhaltsverzeichnis

ATP-Fourier als Funktion nutzen

ATP-Fourier als Funktion nutzen
23.02.2019 14:23:38
Konstantin
Danke an alle, die einem VBA-Anfänger helfen wollen!
Ich nutze die Fourieranalyse aus dem Analyse Toolpack bisher händisch. Eben über Register Daten, Datenanlyse in Excel 2007.
Nun habe ich viele Daten in Spalten, die ich einer Fourieranalyse zu unterziehen habe. Der Datenumfang ist nicht immer gleich groß.
Nun dachte ich mir, es wäre schön, wenn ich die eingebaute Fourieranalyse wie eine normale Excelfunktion im Arbeitsblatt nutzen könnte. Dazu müsste ich der Fourieranalyse den Bereich der Eingabedaten übergeben sowie einen gleich großen Bereich der Ausgabedaten.
In der konkreten Umsetzung scheitere ich, trotz intensiver Suche hier und anderswo. Am ehesten hat mir https://www.herber.de/forum/archiv/1460to1464/1462166_Data_Analysis_FFT_mit_Variablen.html
geholfen.
Nun habe ich in einer Excelarbeitsmappe ein Modul angelegt, diesem folgenden Code zugewiesen:

Option Explicit
Sub Demo()
Const InverseFFT As Boolean = True
Const ForwardFFT As Boolean = False
Const NoLabels As Boolean = False
Const Labels As Boolean = True
Const FFT As String = "ATPVBAEN.XLAM!Fourier"
Static bInitialized As Boolean
'Die nächsten 4 Zeilen stellen sicher, dass das Analyse Toolpack nicht mindestens einmal  _
per Hand
'vor Codeausführung gestartet worden sein muss.
If Not bInitialized Then
Workbooks.Open Application.LibraryPath & "\analysis\procdb.xlam"
bInitialized = True
End If
Run FFT, _
ActiveSheet.Range("$F$21:$F$28"), _
ActiveSheet.Range("$G$21:$G$28"), _
ForwardFFT, _
NoLabels
End Sub
Dieses als erstem Schritt, denn eine Sub ist keine Funktion. Immerhin liest sie meine Daten aus dem Bereich F21:F28 ein und gibt die Fouriertransformation wie gewünscht in G21:B28 aus. Diesen Ablauf konnte ich sogar einer Schaltfläche zuweisen, da sich die Messdaten (in F) ändern können.
Soweit so gut.
Nun wollte ich ja eine Funktion schaffen, der ich den Eingabebereich mit bspw. F21:F28 sowie einen Ausgabebereich bspw. mit H21:H28 übergebe.
Hier mein Code:

Option Explicit
Function DFFT(ByRef EingabeArray As Range, ByRef AusgabeArray As Range) As Range
Const InverseFFT As Boolean = True
Const ForwardFFT As Boolean = False
Const NoLabels As Boolean = False
Const Labels As Boolean = True
Const FFT As String = "ATPVBAEN.XLAM!Fourier"
Static bInitialized As Boolean
'Die nächsten 4 Zeilen stellen sicher, dass das Analyse Toolpack nicht mindestens einmal  _
per Hand
'vor Codeausführung gestartet worden sein muss.
If Not bInitialized Then
Workbooks.Open Application.LibraryPath & "\analysis\procdb.xlam"
bInitialized = True
End If
'Dim AusgabeArray2 As Range
'Set AusgabeArray2 = AusgabeArray
'AusgabeArray = Range("$H$21:$H$28")
'Dim Zelle As Range
'For Each Zelle In AusgabeArray
'    MsgBox Zelle.Address
'    MsgBox Zelle.Value
'Next Zelle
Dim EingabeArray_FFT As Range
Dim AusgabeArray_FFT As Range
Set EingabeArray_FFT = EingabeArray
Set AusgabeArray_FFT = AusgabeArray
'Dim Zelle As Range
'For Each Zelle In EingabeArray_FFT
'   MsgBox Zelle.Address
'   MsgBox Zelle.Value
'Next Zelle
'Run FFT, _
ActiveSheet.Range.EingabeArray_FFT, _
ActiveSheet.Range.AusgabeArray_FFT, _
ForwardFFT, _
NoLabels
Run FFT, _
EingabeArray_FFT, _
AusgabeArray_FFT, _
ForwardFFT, _
NoLabels
'Set DFFT = AusgabeArray_FFT
End Function
Der Bereich F21:F28 enthält bspw. diese Daten:

0,353553391
0,353553391
0,646446609
1,060660172
0,353553391
-1,060660172
-1,353553391
-0,353553391
Wenn ich die Funktion DFFT bspw. in Zelle I21 mit =DFFT($F$21:$F$28;$H$21:$H$28) aufrufe, erhalte ich die Fehlermeldung #WERT! .
In meinem Code könnt ihr in den auskommentierten Codezeilen sehen, was ich bisher ebenso erfolglos versucht habe. Selbst als ich =DFFT($F$21:$F$28;$H$21:$H$28) in den Zeilen I21 bis I28 als Arrayformel eingegeben hatte, erscheint #WERT! .
Mir gelingt es nicht, der Fourierfunktion des Analyse Toolpacks einen flexiblen Ein- wie Ausgabebereich zu übergeben. Ich muss etwas grundlegend falsch machen.
Ich hoffe auf Hilfe. Bin wie gesagt absoluter Anfänger in VBA, Excel ohne VBA kann ich ganz gut.
Liebe Greet-Ings Konstantin

27
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: ATP-Fourier als Funktion nutzen
23.02.2019 17:24:02
Nepumuk
Hallo Konstantin,
das kann nicht funktionieren.
1. Du kannst in einer Tabellenblattfunktion keine Datei öffnen.
2. Müsstest du in der Formel den Ausgabebereich als Parameter übergeben. Das gibt einen Zirkelbezug und den kann Excel nicht berechnen.
Gruß
Nepumuk
AW: ATP-Fourier als Funktion nutzen
23.02.2019 22:00:08
Konstantin
Danke für die erste Antwort, @Nepumuk!
Ich darf auf Deine Antwort eingehen?
Mir Datei öffnen meinst Du wohl Workbooks.Open Application.LibraryPath & "\analysis\procdb.xlam", nicht wahr. Das funktioniert hervorragend und ist unabdingbar notwendig. Hintergrund ist eine Eigenart des Analysis Toolpacks. Wenn nach Öffnen von Excel eine Funktion des Analysis Toolpacks (APT) per VBA angesprochen werden soll, so würde ohne das einmalige manuelle Ausführen der (bzw. einer) APT-Funktion diese nicht ausgeführt werden können. Bei mir ohne diesbezügliche Fehlermeldung.
ATPVBAEN.XLAM!Fourier benötigt offensichtlich die procdb.xlam. Wenn nun einmalig nach dem erstmalige n Öffnen eines Tabellenblatts, in dem als Modul meine Demo-Sub abgelegt ist, ausgeführt werden soll, würde die ohne vorheriges Öffnen der procdb.xlam bzw. einmaligen manuellen Ausführen einer APT-Funktion, das offensichtlich ebenfalls procdb.xlam öffnet, keine APT-Funktion erkannt respektive ausgeführt werden.
Meine Codezeilen ersetzen das vorhgerige manuelle Öffnen der procdb.xlam durch einen APT-Funktionsaufruf.
Du kannst dieses Excelverhalten testen. Lege die Demo-Sub auf ein Formularsteuerfeld Schaltfläche. Kommentiere meine folgenden Codezeilen der Demo-Sub aus oder lösche sie:

Static bInitialized As Boolean
'Die nächsten 4 Zeilen stellen sicher, dass das Analyse Toolpack nicht mindestens einmal  _
per Hand
'vor Codeausführung gestartet worden sein muss.
If Not bInitialized Then
Workbooks.Open Application.LibraryPath & "\analysis\procdb.xlam"
bInitialized = True
End If
Beende Excel und öffne das Arbeitsblatt. Übernehme meine Daten (oder andere) in F21 bis F28. Nun klicke auf die Schaltfläche, und nichts geschieht! Führe einmal die Fourieranalyse aus der Datenanalyse händisch aus. Eingabebereich wieder F21:F28, Ausgabebereich G21:G28. Lösche nun den G-Bereich, klicke auf die Schaltfläche und nun, oh Wunder, wird die Demo-Sub korrekt durchlaufen, der G-Bereich wieder gefüllt.
Füge meinen Code nun wieder ein, speichere. Nach Excelneustart und laden des Arbeitsblattes mit der Demo-Sub wird nun bereits der erste Klick auf die Schaltfläche die Fourierddaten nach G21:G28s schreiben.
Diese Codezeilen stammen nicht aus meiner Feder. Denn ich bin Anfänger Ich habe sie aus dem Netz. Eben weil schon andere das seltsame Verhalten von Excel beobachtet und darüber gelöst haben.
Wenn gewünscht, stelle ich eine Exceldatei ein, die meine Beschreibung stützt.
Dein zweitens mit dem Zirkelbezug sehe ich nicht. Höchstens eine Gefahr desselben. Wenn ich meine Funktion DFFT irgendwo in der H-Spalte aufrufe, so müsste ich doch über =DFFT(...;G21:G28) den Ausgabebereich auf die betreffenden Zellen der G-Spalte setzen können. Da überlappt sich nichts. Somit dürfte auch kein Zirkelbezug vorliegen. Ich mag mich irren, bin ja Anfänger.
Wenn ein anderer Weg bekannt oder möglich ist, meinetwegen über eine Sub dieser einen Ein- wie Ausgabebereich zu übergeben, da bin ich sehr flexibel. Mein Wissensstand ist, dafür sollen Funktionen verwendet werden. Und in meiner gibt es einen Ein- und einen Ausgabebereich. Zumindest in emienr Vorstellung.
Liebe Greet-Ings Konstantin
Anzeige
AW: ATP-Fourier als Funktion nutzen
24.02.2019 09:15:27
Nepumuk
Hallo Konstantin,
da muss ich dir widersprechen. Wenn du einen Haltepunkt in die erste Zeile der Funktion setzt und sie per Formel aufrufst wirst du sehen, dass die Workbook.Open - Methode zwar fehlerfrei durchlaufen wird, aber das Addin wird nicht geöffnet. UDF's können keine Datei öffnen. Es gibt zwar einen Trick per API-Timer oder per Evaluate die das gestatten, aber das löst noch immer nicht das Problem mit dem Zirkelbezug.
Gruß
Nepumuk
AW: ATP-Fourier als Funktion nutzen
23.02.2019 22:12:16
Konstantin
Ich habe noch den Link wieder herausgesucht, dem ich meinen Code entnommen habe, um das einmalige Starten der Datenanalyse zu vermeiden: http://www.office-loesung.de/ftopic397023_0_0_asc.php .
Auch bei Microsoft-Answers findet sich entsprechendes, siehe https://answers.microsoft.com/de-de/office/forum/office_2007-excel/atpvbaenxlam-funktioniert-in-skript-erst-nach/2b8ace6e-7d35-47a9-9eb3-512c22152416?page=1 .
Liebe Greet-Ings Konstantin
Anzeige
AW: ATP-Fourier als Funktion nutzen
23.02.2019 22:12:36
Konstantin
Ich habe noch den Link wieder herausgesucht, dem ich meinen Code entnommen habe, um das einmalige Starten der Datenanalyse zu vermeiden: http://www.office-loesung.de/ftopic397023_0_0_asc.php .
Auch bei Microsoft-Answers findet sich entsprechendes, siehe https://answers.microsoft.com/de-de/office/forum/office_2007-excel/atpvbaenxlam-funktioniert-in-skript-erst-nach/2b8ace6e-7d35-47a9-9eb3-512c22152416?page=1 .
Liebe Greet-Ings Konstantin
AW: ATP-Fourier als Funktion nutzen
23.02.2019 22:36:34
onur
Eine Funktion (UDF), die du in EXCEL als Formel benutzen willst, DARF (weder direkt oder indirekt) keine Zellenwerte verändern (eintragen), sonst gibt es eine "WERT!"-Fehlermeldung - und deine tut genau das.
Anzeige
AW: ATP-Fourier als Funktion nutzen
24.02.2019 03:01:26
Konstantin
Okay, das erklärt dann den von @Nepumuk bezeichneten Zirkelschluss. Danke für den Hinweis.
Hm, wie löse ich dann mein Problem? Ich möchte je einen variablen Ein- und Ausgabebereich setzen können, an APT-Fourier übergeben und das Ergebnis im von mir bezeichneten Ausgabebereich geschrieben sehen. Geht das denn?
In https://www.herber.de/forum/archiv/1460to1464/1462166_Data_Analysis_FFT_mit_Variablen.html scheint ja solches auf einem anderen Weg zu funktionieren. So wie ich es dort verstehe, müsste ich dann die Position des Ausgabebereichs relativ zum Eingabebereich setzen.
Liebe Greet-Ings Konstantin
Anzeige
AW: ATP-Fourier als Funktion nutzen
24.02.2019 03:01:40
Konstantin
Okay, das erklärt dann den von @Nepumuk bezeichneten Zirkelschluss. Danke für den Hinweis.
Hm, wie löse ich dann mein Problem? Ich möchte je einen variablen Ein- und Ausgabebereich setzen können, an APT-Fourier übergeben und das Ergebnis im von mir bezeichneten Ausgabebereich geschrieben sehen. Geht das denn?
In https://www.herber.de/forum/archiv/1460to1464/1462166_Data_Analysis_FFT_mit_Variablen.html scheint ja solches auf einem anderen Weg zu funktionieren. So wie ich es dort verstehe, müsste ich dann die Position des Ausgabebereichs relativ zum Eingabebereich setzen.
Liebe Greet-Ings Konstantin
Anzeige
AW: ATP-Fourier als Funktion nutzen
24.02.2019 03:22:47
onur
"Okay, das erklärt dann den von @Nepumuk bezeichneten Zirkelschluss" -Wie das ? Das Eine hat doch mit dem Anderen nix zu tun.
"Ich möchte je einen variablen Ein- und Ausgabebereich setzen können, an APT-Fourier übergeben und das Ergebnis im von mir bezeichneten Ausgabebereich geschrieben sehen. Geht das denn? " - Anscheinend hast du nicht wirklich gelesen bzw kapiert, was ich dir schrieb: NEIN, eine Funktion in einer Zelle darf KEINE ANDERE ZELLE VERÄNDERN.
AW: ATP-Fourier als Funktion nutzen
24.02.2019 13:39:34
Konstantin
Danke für Deine Antwort und Geduld, @Onur!
Hm, dann gibt es keinen Zirkelschluss. So wie ich ursprünglich sagte. Nur, kann eine Funktion eben nicht einen Ausgabebereich beschreiben. Somit ist mein Funktionsaufruf unsinnig. Eben weil ein Funktionsaufruf ungeeignet ist.
Nun kann ATP-Fourier jedoch einen Ausgabebereich beschreiben. Auch obige Demo-Sub kann das. Alles geht da was, wenn gleich auf einem anderen Weg.
Nun frage ich, kann ich meinem Ziel nun anders näher kommen. Sozusagen eine erweiterte Funktion schaffen, die die Übergabe eine Ein- wie eines Ausgabebereichs zulässt bzw., besser, den bezeichnete und übergebenen Ausgabebereich auch gleich füllt.
Liebe Greet-Ings Konstantin
Anzeige
AW: ATP-Fourier als Funktion nutzen
24.02.2019 15:07:58
onur
Du kannst eine normale Sub schreiben, so daß, wenn eine Zelle im Eingabebereich eingegeben/verändert wird, der Ausgabebereich neu berechnet und eingetragen wird.
D.h. sozusagen, daß du deine ursprüngliche Sub aufrufst, wenn eine Zelle im Eingabebereich verändert wird. Oder halt per Button.
AW: ATP-Fourier als Funktion nutzen
24.02.2019 22:33:40
Konstantin
Soweit mir (nun hoffentlich) klar. Nun habe ich eine noch unbestimmte Zahl von Messwertenreihen (in Spalten, bspw.) mit im allgemeinen Fall unterschiedlicher Messwertanzahl. Dann müsste ich für jede Messreihe eine eigene Sub schreiben? Oder in der Sub eine Erkennung vorsehen, so dass die Fourieranalyse jeweils in eine eigene Spalte pro Messwertreihe geschrieben werden?
Ich sehe da keinen Vorteil (mehr) gegenüber der händischen Ausführung mittels Datenanalyse und dann weiter mit ATP-Fourier.
VBA scheint eingeschränkter zu sein, als ich bisher dachte.
Ich habe nun nochmals darüber nachgedacht. Man könnte die Funktionsausgabe ja zeilenweise einsetzen, also als Arrayformel. Doch das scheitert daran, dass ATP-Fourier als Eingabeparameter bereits den Ausgabebereich erwartet.
Wenn ich mir die Unterschiede zwischen einer Sub und einer Function gegenwärtige, bei ersterer keine Parameterübergabe, bei zweiterer keine Schreiben in Zellen, und dieses mit der Möglichkeit von ATP-Fourier vergleiche, dann ist meine Schlussfolgerung, dass ATP-Fourier nicht in VBA programmiert worden sein kann.
Ich müsste aus einer anderen Programmiersprache einer erweiterte Fourieranalyse schreiben, die mächtig ist, den Zelleingabebereich ebenso wie ihren Zellausgabebereich verarbeiten zu können. Und dann am besten auch gleich die Fourieranalyseroutine selbst neu schreiben, auch um von den Zweierpotenzen im Eingabebereich wegkommen zu können.
Sehe ich das soweit richtig?
Liebe Greet-Ings Konstantin
Anzeige
AW: ATP-Fourier als Funktion nutzen
24.02.2019 22:36:15
onur
"bei ersterer keine Parameterübergabe" - Wie kommst du denn da drauf?
AW: ATP-Fourier als Funktion nutzen
25.02.2019 00:01:51
Konstantin
Ich meinte das gelesen zu haben bzw. dem Eingangsbeispiel Demo entnommen zu haben. Denn in Demo waren die () leer.
Ist soweit erledigt, Dein Beispiel Sub mit Parameterübergabe folgt ja.
Liebe Greet-Ings Konstantin
AW: ATP-Fourier als Funktion nutzen
24.02.2019 22:46:52
onur
Wieso nicht so?
Ich kann nicht testen, da ich Fourieranalyse aus dem Analyse Toolpack nicht habe.
Ich weiss nicht mal, was die Funktion oder Sub ausgibt oder einträgt.
Public Sub DFFT(ByRef EingabeArray As Range, ByRef AusgabeArray As Range)
Const InverseFFT As Boolean = True
Const ForwardFFT As Boolean = False
Const NoLabels As Boolean = False
Const Labels As Boolean = True
Const FFT As String = "ATPVBAEN.XLAM!Fourier"
Static bInitialized As Boolean
'Die nächsten 4 Zeilen stellen sicher, dass das Analyse Toolpack nicht mindestens einmal _
per Hand vor Codeausführung gestartet worden sein muss.
If Not bInitialized Then
Workbooks.Open Application.LibraryPath & "\analysis\procdb.xlam"
bInitialized = True
End If
Run FFT, _
EingabeArray, _
AusgabeArray, _
ForwardFFT, _
NoLabels
End Sub

Anzeige
AW: ATP-Fourier als Funktion nutzen
25.02.2019 00:08:52
Konstantin
Ich habe Dein Beispiel, danke dafür (!), in ein neues Arbeitsblatt als Modul 1 eingefügt. Wieder eine Schaltfläche angelegt.
Nur: Ich bekomme keine Werte an DFFT(...) übergeben! Wie mache ich das? Der Schaltfläche ist das Makro (mit Deinem Code der Sub DFFT) "'Test-Diskrete Fast Fourier Transformation2.xlsm'!DFFT" zugewiesen. Mein Eingabebereich steht in F21:F28, der Ausgabebereich soll bspw. H21:H28 sein.
Wie bekomme ich beide Bereiche nun der Sub DFFT (von außen) mitgeteilt?
Liebe Greet-Ings Konstantin
AW: ATP-Fourier als Funktion nutzen
25.02.2019 06:29:03
onur
Wenn der Sub im Modul ist, musst du die Blattnamen des Ein-/ Ausgabebereiches mit-übergeben:
(z.B.):
Call DFFT(Tabelle1.Range("F21:F28"),Tabelle1.Range("H21:H28"))

Anzeige
AW: ATP-Fourier als Funktion nutzen
25.02.2019 18:02:22
Konstantin
Ich finde es toll, wie Du mir zu helfen suchst, @onur! Danke!
Doch nun habe wir uns nun einmal im Kreis gedreht. Denn ich muss in die Sub DFFT() bereits vor Aufruf manuell das Eingabearray sowie das Ausgabearray jeweils als Zellbereich eintragen. Ich kann nicht, wie gewünscht, der Sub DFFT() erst beim Aufruf sagen, lege aus diesem Zellbereich ein, lege das Ergebnis dorthin ab. Ich habe dann starre Bereiche statt flexible.
Deshalb war ich ursprünglich von einer Function DFFT() ausgegangen. Bis mir freundlicherweise von @Nepumuk wie Dir, @onur, mitgeteilt worden ist, eine Function könne nicht in einen Zellbereich schreiben.
Also, meine Schlussfolgerung, ist das mit Excel-VBA nicht lösbar. Weitere Schlussfolgerung, das von Microsoft zur Verfügung gestellte kostenlose APT für Excel kann nicht in VBA programmiert worden sein. Ergo muss man aus anderen Programmiersprachen ebenfalls Excelzellen ansprechen können. Eine derartige Programmiersprache müsste ich für mein Ziel verwenden.
Sind meine Schlussfolgerungen richtig?
Wenn ich richtig liege, ist der Aufruf der Fourieranalyse im Rahmen der Excel-Datenanalysefunktionen nichts anderes als eine der eigentlichen Fourieranalyse vorgeschaltete Maske, die obigem Programm den Bereich des Eingabearrays wie den Zellausgabebereich ermöglicht und der weiteren Programmausführung übergibt. Jedenfalls nicht an eine Excel-VBA-Sub oder -Function.
Falls es doch in VBA gehen sollte, dann müsste es eine versteckte Prozedur neben den Standards Sub, Function und Property geben, die Microsoft dazu nutzt. Letzteres meinte ich mit erweiterter Funktion.
Warum hast Du nicht das APT, @onur? Wenn Du Excel hast, dann steht Dir das APT doch prinzipiell zu Verfügung: Excel-Optionen, dort Add-Ins, "Gehe zu" und dort "Analyse-Funktionen" und "Analyse-Funktionen - VBA" aktivieren. Unter Excel-Menü Daten, Register Analyse, Datenanalyse auswählen.
Liebe Greet-Ings Konstantin
AW: ATP-Fourier als Funktion nutzen
25.02.2019 18:13:15
onur
Poste doch mal deine Datei.
AW: ATP-Fourier als Funktion nutzen
27.02.2019 19:16:58
Konstantin
Ja, der Code läuft. Läuft prima. Doch er löst das Problem nicht. Denn statt den Code zu verwenden könnte ich unter Praktikabiltätsgesichtspunkten genauso gut die in Excel eingebaute ATP-Fourieranalyse verwenden. In dieser muss ich manuell den Ein- und Ausgabebereich eingeben. In der Sub nun dort den Ein- und Ausgabebereich manuell eintragen.
Gewünscht ist, dass ich Bereiche der Dateneingabe habe, in unterschiedlichem Umfang. Und dass ich wie bei einer Formel, bspw. auch in Gestalt einer Arrayformel, den Ein- und Ausgabebereich angebe. Meinetwegen kann der Ein- und Ausgabebereich in zwei Zellen stehen, dort ausgelesen und verwendet werden. Die Daten stehen dann in den ausgewiesenen Bereichen. Und wenn sich im Eingabebereich der Datenumfang ändert, dann passt sich der Ausgabebereich automatisch an. Analog wie bei einer Formel.
Das Stichwort ist Wahlfreiheit der Bereiche. Die Bereiche werden wie bei einer Formel übergeben; durch einen Zellinhalt an beliebiger Stelle. Bisher haben wir immer starre Strukturen, keine Wahlfreiheit.
Die starre Lösung mit der Sub funktioniert, eine Lösung mit einer Function scheitert, weil dort der Ausgabebereich nicht übergeben werden kann.
Deshalb frage ich, ob es nicht eine andere Lösung gibt oder ich mir den gewünschten Komfort schlicht abschminken muss.
Was ich berücksichtigen könnte ist, dass der Ausgabebereich immer ständig in der Spalte rechts neben dem ausgewählten Datenbereich steht. Wenn also als Dateneingabebereich bspw. F21:F28 genommen werden soll, dass dann der Ausgabebereich ohne ihn zu benennen, zu übergeben dann in G21:G28 liegt.
Interessanterweise kann ja Excel durchaus basierend auf einer Formel(!) Daten aus einem Datenbereich einlesen und als Matrix nach Verarbeitung ein Ergebnis ausgeben. Beispiel ist die Regressionsfunktion. Ich habe ein Beispiel, aus dem das ersichtlich ist: https://www.herber.de/bbs/user/127983.xlsx . Die Arrayfunktion wird in den umrahmten Feldern angewendet. So hatte ich es mir auch mit einer zu schaffenden DFFT-Funktion gedacht.
Im Grunde analog dazu hätte ich eine ähnliche Möglichkeit mir auch für die Fourieranalyse erhofft.
Liebe Greet-Ings Konstantin
AW: ATP-Fourier als Funktion nutzen
27.02.2019 19:28:26
onur
"Interessanterweise kann ja Excel durchaus basierend auf einer Formel(!) Daten aus einem Datenbereich einlesen und als Matrix nach Verarbeitung ein Ergebnis ausgeben"- Dein Beispiel hinkt, denn das ist eine eingebaute Excel-Funktion, die als Matrixversion verwendet wird - auch da werden nur Zellen verändert, in der die Formel steht.
ATP-Fourieranalyse ist jedoch keine Funktion sondern ein Add-In, der mittels eines Subs deine Berechnungen durchführt.
Da nützt es auch nicht, wenn die Spalte der Ergebnisse immer direkt rechts von der Eingabe stehen-
Du könntest aber den Code in das Change-Ereignis des Eingabebereiches einbauen, dann könntest du bei jeder Änderung der Eingabewerte die Ausgabe neu berechnet lassen.
AW: ATP-Fourier als Funktion nutzen
27.02.2019 19:29:26
onur
"Interessanterweise kann ja Excel durchaus basierend auf einer Formel(!) Daten aus einem Datenbereich einlesen und als Matrix nach Verarbeitung ein Ergebnis ausgeben"- Dein Beispiel hinkt, denn das ist eine eingebaute Excel-Funktion, die als Matrixversion verwendet wird - auch da werden nur Zellen verändert, in der die Formel steht.
ATP-Fourieranalyse ist jedoch keine Funktion sondern ein Add-In, der mittels eines Subs deine Berechnungen durchführt.
Da nützt es auch nicht, wenn die Spalte der Ergebnisse immer direkt rechts von der Eingabe stehen-
Du könntest aber den Code in das Change-Ereignis des Eingabebereiches einbauen, dann könntest du bei jeder Änderung der Eingabewerte die Ausgabe neu berechnet lassen.
AW: ATP-Fourier als Funktion nutzen
27.02.2019 22:37:33
Konstantin
Danke, @onur! Ich müsste mich dann in "Change-Ereignis" einlesen.
Naja, mein Beispiel mag hinken. Jedenfalls wenn VBA vorausgesetzt wird zu dessen Umsetzung. Doch es zeigt, was prinzipiell ginge, wenn gleich, wie ich mutmaße, jenseits von VBA. Müsste ich auch erlernen.
Was ich erfahre ist, es gibt hier keine bewährte Lösung, die ich modifizieren könnte für meinen Zweck. Das ist dann so.
Falls doch noch Lösungsvorschläge kommen, wie die Prozedurklassen von Excel zu erweitern, oder es doch eine VBA eine Lösung geben sollte, so wäre ich um eine Nachricht dankbar - auch nach langer Zeit.
Liebe Greet-Ings Konstantin
AW: ATP-Fourier als Funktion nutzen
28.02.2019 21:08:02
Konstantin
Es läuft, @onur! Die Überwachung des Eingabebereichs! Mensch, ich bin glücklich. Soweit wäre ich als Anfänger ohne Dich nie gekommen! Mit der Lösung, die ich meine nachvollziehen zu können, kann ich leben.
Habe heute erste Proof-of-Concept-Messwerte erhalten, ich kann mir meine Excel-Auswertung basteln. Danke!
Das kann ich gar nicht wieder gut machen, @onur! Deine Geduld, Dein Engagement. Ebenfalls beginnend das von @nepumuk. Leute, danke!
Falls ihr mal eine Geldanlage checken müsst oder mit der Fahrerlaubnis Schwierigkeiten habt, mailt mich an. Oder eine technische Frage. Oder sonst. Da ist noch Guthaben, lach.
Liebe Greet-Ings Konstantin

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige