Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

immer gleiches Ergebnis

Forumthread: immer gleiches Ergebnis

immer gleiches Ergebnis
05.08.2002 09:29:00
Conny
Hallo,
wünsche einen guten Montagmorgen.
Kann mir vielleicht bitte jemand sagen, warum ich stets das gleiche Ergebnis herausbekomme (nämlich -0,000892756), obwohl ich unterschiedliche Ausgangswerte hab?
Habe schon den Quellcode Stück für Stück ablaufen lassen aber in den Variablen stehtnix drin. Verstehe das nicht! Bin dankbar für jeden Lösungsansatz.
Hier der Quelltext:

Danke Conny

Anzeige

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

Betreff
Datum
Anwender
Anzeige
Re: immer gleiches Ergebnis
05.08.2002 10:45:39
GerdZ
Hallo Conny,

das Ergebnis ist abhängig von der aktiven Zelle, nicht von der Zelle, in der die Funktion steht. Vielleicht solltest Du das ändern:
Statt


Function EigeneFunktion() As Double
schreibst Du

Function EigeneFunktion(b as Long) As Double
und löschst die Zeile "b = ActiveCell.Row".
Die Funktion wird dann in der Tabelle aufgerufen mit:

=EigeneFunktion(Zeile())
Dadurch ist das Ergebnis abhängig von der Zeile, in der die Funktion steht.
Eine andere Fehlerquelle könnte der Wert der Variablen Glättung sein. Zur Überprüfung evtl.

Debug.Print "Glättung = ";Glättung
nach Glättung = Worksheets(6).Cells(26, 16).Value einfügen.

Gruß
Gerd


Anzeige
Re: immer gleiches Ergebnis
05.08.2002 11:06:02
Conny
Hallo Gerd
vielen Dank für die Hilfe.
Hab es grad abgeändert. Der Fehler lag bei der Glättung, da der Wert nicht übernommen wurde. Hab ihn jetzt festgelegt und es geht.
Leider geht es nur für die ersten vier Zeilen also von 16 bis 19 und ab 20 kommt jetzt immer 0 raus.
Hättest du da vielleicht auch noch eine Idee wo der fehler liegen könnte?
Nochmals vielen Dank für die Hilfe!
Gruß Conny
Anzeige
Re: immer gleiches Ergebnis
05.08.2002 11:40:51
GerdZ
Hallo Conny,

da ist wohl noch ein logischer Fehler in Deiner Funnktion.
Von Zeile 19 bis 21 wird Steigung1 bis Steigung5 und Steigung7 berechnet, Steigung6 wird nicht berechnet und bleibt leer. Wenn jetzt in Zeile 19 Steigung5 kleiner wie das 16fache von Glättung ist, wird als Ergebnis ABS(Steigung6) zurückgegeben. Steigung6 ist aber leer und ABS() von einer leeren Variablen ist in VBA = 0.

Gruß
Gerd

Anzeige
Re: immer gleiches Ergebnis
05.08.2002 11:46:29
Conny
Hallo Gerd ,
danke nochmal aber irgendwie steh ich wohl grad auf dem Schlauch. Wieso wird Steigung6 nicht berechnet? und warum berechne ich bei 19 bis 21 die steigung1,5 und 7???
Gruß Conny
Re: immer gleiches Ergebnis
05.08.2002 12:13:05
GerdZ
Hallo Conny,

Steigung6 wird nur berechnet, wenn b (die Zeilennummer; hier 19) zwischen 16 und 18 liegt.
Da dies bei b=19 nicht zutrifft, wird das, was zwischen diesem elseif und dem endif steht, nicht ausgeführt.
Das mit Steigung1 bis Steigung5 war ein Fehler von mir.
Berechnet wird in Zeile 19 nur Steigung5 und Steigung7.
Die anderen werden nicht berechnet, da b auserhalb des jeweils geprüften Bereichs liegt.

Gruß
Gerd


Anzeige
Re: immer gleiches Ergebnis
05.08.2002 13:12:33
Conny
Hallo Gerd,
das habe ich jetzt verstanden. Danke!
Aber mein eigentliches Ziel ist es ja, daß wie in dem Beispiel bei Zeile 19 nur Die Steigung 6 berechnet und als ergebnis für die untere if-abfrage übernommen wird, und nicht zusätzlich auch noch die 7te. Weisst du was ich meine?
Gruß Conny
Anzeige
Re: immer gleiches Ergebnis
05.08.2002 13:50:19
GerdZ
Hallo Conny,

die 7te wird immer berechnet, da diese Berechnung mit keiner IF-Abfrage eingeschränkt ist.
Deine unteren IF-Abfragen sind unvollständig oder falsch.
Du überprüfst die Zeilennummern und vergleichst den Absolutwert z.B. der Steigung5 mit dem 16fachen von Glättung. Überprüfe doch mal den Inhalt der Variablen mit


Debug.Print b, Steigung5, 16 * Glättung

Gruß
Gerd





Anzeige
Re: immer gleiches Ergebnis
05.08.2002 14:15:13
Conny
Hallo Gerd,
ich denke du hast Recht, was die unteren if-Abfragen angeht, leider weiss ich momentan keine andere Lösung.
Wahrscheinlich wäre es das vernünftigste noch mal von vorn zu beginnen und es vielleicht als case bedingung zu formulieren.
Ich werde dabei selbstverständlich deine guten Tips berücksichtigen. Also nochmlas vielen Dank du hast mir sehr weitergeholfen!!
Gruß Conny
Anzeige
;
Anzeige

Infobox / Tutorial

Immer das gleiche Ergebnis in Excel – Probleme und Lösungen


Schritt-für-Schritt-Anleitung

Um das Problem mit immer gleichen Ergebnissen in Excel zu beheben, folge diesen Schritten:

  1. Funktion anpassen:

    • Stelle sicher, dass die Funktion in VBA korrekt definiert ist. Anstatt nur Function EigeneFunktion() As Double zu verwenden, ändere es zu:
      Function EigeneFunktion(b As Long) As Double
    • Entferne die Zeile b = ActiveCell.Row, um sicherzustellen, dass die Funktion von der Zeile abhängt, in der sie aufgerufen wird.
  2. Funktion aufrufen:

    • Verwende in deiner Excel-Tabelle die Formel:
      =EigeneFunktion(Zeile())
    • Dadurch wird das Ergebnis direkt von der Zeile, in der die Formel steht, abhängen.
  3. Debugging:

    • Füge Debugging-Statements hinzu, um die Werte der Variablen zu überprüfen:
      Debug.Print "Glättung = "; Glättung
    • Überprüfe auch die Zeilennummer und andere relevante Variablen:
      Debug.Print b, Steigung5, 16 * Glättung

Häufige Fehler und Lösungen

  • Immer das gleiche Ergebnis:

    • Wenn du immer das gleiche Ergebnis erhältst, könnte die Funktion nicht korrekt auf die jeweiligen Zeilen zugreifen. Stelle sicher, dass b die richtige Zeilennummer übergeben wird.
  • Nullwerte ab Zeile 20:

    • Wenn ab Zeile 20 immer 0 zurückgegeben wird, überprüfe die Logik in Deiner Funktion. Achte darauf, dass alle notwendigen Berechnungen für diese Zeilen korrekt implementiert sind.
  • Steigung6 wird nicht berechnet:

    • Wenn Steigung6 nicht berechnet wird, kann es daran liegen, dass die Bedingungen in den IF-Abfragen nicht erfüllt sind. Überprüfe, ob die Bedingungen richtig definiert sind.

Alternative Methoden

  • Verwendung von Select Case:

    • Anstatt komplexe IF-Abfragen zu verwenden, kannst du die Select Case-Anweisung nutzen, um die Logik klarer und einfacher zu gestalten.
  • Zellenreferenzen anpassen:

    • Stelle sicher, dass die Zellenreferenzen in deinen Formeln und Funktionen korrekt sind. Vermeide harte Kodierungen und nutze stattdessen dynamische Verweise.

Praktische Beispiele

Hier ist ein einfaches Beispiel für eine Funktion, die die Steigung basierend auf der Zeilennummer berechnet:

Function BerechneSteigung(b As Long) As Double
    Dim Glättung As Double
    Glättung = Worksheets(6).Cells(26, 16).Value

    If b >= 16 And b <= 18 Then
        ' Berechnung für Steigung6
        BerechneSteigung = ' Deine Berechnung hier
    ElseIf b = 19 Then
        ' Berechnung für Steigung5
        BerechneSteigung = ' Deine Berechnung hier
    Else
        BerechneSteigung = 0
    End If
End Function

Tipps für Profis

  • Nutzung von Debugging: Verwende Debug.Print häufig, um den Verlauf der Variablen zu überprüfen. Das kann dir helfen, Fehler schneller zu identifizieren.

  • Code modularisieren: Halte deinen Code modular, indem du kleinere Funktionen erstellst, die spezifische Aufgaben erfüllen. Dies erleichtert die Fehlersuche und Wartung.

  • Kommentiere deinen Code: Füge Kommentare hinzu, um die Funktionsweise deines Codes zu erläutern. Dies ist besonders hilfreich, wenn du oder jemand anderes später darauf zurückgreifen möchte.


FAQ: Häufige Fragen

1. Warum erhalte ich immer das gleiche Ergebnis in meiner Funktion?
Das liegt oft daran, dass die Funktion nicht korrekt auf die Zeilennummer zugreift. Stelle sicher, dass du die Zeilennummer korrekt übergibst.

2. Wie kann ich sicherstellen, dass alle Variablen korrekt berechnet werden?
Nutze Debugging-Anweisungen, um den Wert der Variablen während der Ausführung der Funktion zu überprüfen. So kannst du feststellen, ob und wo Werte fehlen.

3. Was kann ich tun, wenn mein Ergebnis 0 ist?
Überprüfe die Bedingungen in deinen IF-Abfragen und stelle sicher, dass sie für die entsprechenden Zeilen korrekt sind.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige