Thema Datum  Von Nutzer Rating
Antwort
17.06.2009 23:00:23 Sabine
NotSolved
Blau Aw:Nullstellen, Maxima und Minima markieren
18.06.2009 14:06:35 Holger
NotSolved
18.06.2009 23:52:25 Sabine
NotSolved
19.06.2009 08:10:03 Holger
NotSolved
23.06.2009 14:43:24 Sabine
NotSolved
22.06.2009 07:58:33 Sabine
NotSolved

Ansicht des Beitrags:
Von:
Holger
Datum:
18.06.2009 14:06:35
Views:
1089
Rating: Antwort:
  Ja
Thema:
Aw:Nullstellen, Maxima und Minima markieren
Hallo Sabine,
du setzt am Ende jedes Durchlaufs intZeile wieder auf 8, während du die Spalten hochzählst. Deshalb werden nur die obersten Zellen erfasst. Du musst also eine zweite Schleife in die erste einschießen, in der du die Zeilen durchläufst. In der Zeile If .Cells(intZeile).Value = "" Then fehlt die Angabe für die Spalte. Der Code dürfte einen Syntaxfehler ergeben.
Ich kenne deine Anforderungen nicht, aber ich vermute, dass du Wertetabellen für Funktionen erzeugen willst. Bist du dir dann sicher, dass zwischen zwei Nullstellen nur ein Extrema liegt? Das ist im Allgemeinen nicht der Fall. Betrachte z.B. y=x^4-2*x*x-2.
Bei einer nummerischen Berechnung bleibt wohl nichts anderes übrig, als die Differenzen eines Wertes zu dem vorhergehenden und nachfolgenden Punkt zu prüfen und beim Umschlagen des Vorzeichens auf ein Minimum oder Maximum zu schließen. Es ist aber nicht sicher, dass du alle Extrema so erwischt, weil dieses wiederum von der Intervallbereite und der Funktion abhängt. Z.B. wird y=sin(1/x) für x gegen 0 immer Probleme bereiten.

Ich habe hier ein Makro zum Auffinden von Nullstellen etc., das ich im Wesentlichen nur hinsichtlich der Markierung der Nullstellen angepasst habe. Es bezieht sich auf das aktive Tabellenblatt. Di wirst es vielleicht noch anpassen müssen. Mit zwei Do-Loop-Schleifen wäre es auch gegangen. Kleiner und größer musst du durch die entsprechenden Zeichen ersetzen (damit gibt es hier oft Probleme).

Sub max_min()
Zeile1 = 8
Spalte1 = 2
farbemax = 3
farbemin = 5

Cells.Interior.ColorIndex = xlNone
For j = Spalte1 To Cells(8, Columns.Count).End(xlToLeft).Column'letzte beschrieben Spalte
s = Sgn(Cells(Zeile1 + 1, j) - Cells(Zeile1, j))'Vorzeichen, Prüfung für die erste Zelle (Rand)
If s = 0 Then'wenn Beginn mit 0, muss man sehen, wohin sich die Fkt entwickelt
For i = Zeile1 To Cells(Rows.Count, j).End(xlUp).Row - 1'letzte beschrieben Zeile -1
t = Sgn(Cells(i + 1, j) - Cells(i, j))
If t <> 0 Then Exit For
Next i
If i Zeile1 Then
Cells(i, j).Interior.ColorIndex = Cells(i - 1, j).Interior.ColorIndex
End If
End Select
Next i
Next j
End Sub

Das Speichern von Werten in einer Tabelle geht mit
sheets("TabellenblattnameZiel").Cells(Zeile,Spalte)=....

Noch ein Hinweis: Wenn du ein Problem mit der Syntax eines speziellen Excel-Befehls wie z.B. das Einfärben einer Zelle oder der Schrift in der Zelle (beides sind Farbmarkierungen!) hast, empfehle ich dir, als ersten Schritt ein solches Teilmakro aufzuzeichnen. Damit erhälst durch meisten einen Ansatz zum weiteren Vorgehen.

Gruß
Holger






Sabine schrieb am 17.06.2009 23:00:23:

Nullstellen, Maxima, Minima
Hallo,
mit folgendem Makro wollte ich eigentlich Nullstellen (fett) und dazwischen Maxima (rot) und Minima (blau) in allen Arbeitsblättern einer Excel-Datei (Excel 2007) markieren. Dummerweise läuft es in der obersten Zeile der mehrspaltigen Tabelle einmal quer durch obwohl doch meines Erachtens nach die zweite If-Anweisung sagt, dass die Spalte erst gewechselt werden soll, wenn eine Leere Zelle erreicht wird also am Ende der Spalte.

Wo liegt der Fehler und wie erkläre ich, dass zwischen zwei Nullstellen das Maximum bzw. Minimum markiert werden soll.

Wie lagere ich die gefundenen Nullstellen, Maxima und Minima mit ihren Koordinaten zur Weiterverarbeitung in eine separate Tabelle aus.

Meine Kenntnisse in VBA sind auf Anfänger-Niveau, so dass ich mich über jede Hilfe freuen würde.

Vielen Dank
Sabine

Sub Vorzeichenwechsel_Max_Min_Markieren()
Dim intZeile As Integer
Dim nextZeile As Integer
Dim intSpalte As Integer

With Tabelle8

intZeile = 8
nextZeile = 9
intSpalte = 2

Do Until .Cells(intZeile, intSpalte).Value = ""

If .Cells(intZeile, intSpalte).Value >= 0 And _
.Cells(nextZeile, intSpalte).Value <= 0 Then
.Cells(intZeile, intSpalte).Font.Bold = True
End If
intZeile = intZeile + 1
nextZeile = nextZeile + 1

If .Cells(intZeile).Value = "" Then
intZeile = 8
intSpalte = intSpalte + 1

End If

Loop

End With
End Sub


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
17.06.2009 23:00:23 Sabine
NotSolved
Blau Aw:Nullstellen, Maxima und Minima markieren
18.06.2009 14:06:35 Holger
NotSolved
18.06.2009 23:52:25 Sabine
NotSolved
19.06.2009 08:10:03 Holger
NotSolved
23.06.2009 14:43:24 Sabine
NotSolved
22.06.2009 07:58:33 Sabine
NotSolved