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

Forumthread: Minimum ohne Nullen mit VBA

Minimum ohne Nullen mit VBA
16.04.2009 13:14:33
Huwy
Hallo zusammen
Ich stehe gerade vor einem Problem, wofür ich weder im Forum noch mit google eine Lösung gefunden habe.
Und zwar geht es um folgenden Teil eines VBA Macros:
Aus einem Bereich (D31:E121) mit Format "Datum" brauche ich den kleinsten Wert.

= WorksheetFunction.Min(Range("D31:E121"))


Das funktioniert soweit auch ganz gut. Aber da die Zellen verlinkt sind, habe ich diverse Nullwerte welche das Resultat verfälschen. Wie kann ich diese Nullen von der Suche ausgeschliessen?
Ich weiss, es gibt Lösungsansätze mit Formeln, aber ich habe nichts für VBA gefunden das funktioniert...
Vielen Dank im Voraus für eure Hilfe!
Grüsse Huwy

Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Minimum ohne Nullen mit VBA
16.04.2009 15:28:10
Daniel
Hi
über

Worksheetfunction

kannst du doch die meisten Excel-Formeln auch in VBA nachbilden, also sollte die Lösung doch kein Problem sein, wenn die Excel-Formellösung bekannt ist.
wenn du keine Passende Excelfunktion findest, kannst du dir diese ja in VBA nachbauen:
und dann wie eine Normale Funktion im Code verwenden:


Public Function MinOhneNull(Bereich as Range) as double
dim Zelle as Range
MinOhneNull = Worksheetfunction.Max(Bereich)
for Each Zelle in Range(Bereich)
if Zelle.Value  0 then if MinOhneNull 


diese Funktion in ein allgemeines Modul einstellen und dann im Code:
= MinOhneNull(Range("D31:E121")
verwenden.
Gruß, Daniel

Anzeige
AW: Minimum ohne Nullen mit VBA
06.05.2009 10:29:01
Huwy
Hallo Daniel
schon einige Zeit her, aber die letzten Wochen bin ich nicht dazu gekommen daran zu arbeiten...
Das mit dem Worksheetfunction hab ich schon versucht, hat irgendwie nicht geklappt! Mithilfe deines Codes funktionierts jetz jedoch!
Vielen Dank an dieser Stelle
Grüsse Huwy
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Minimum ohne Nullen mit VBA


Schritt-für-Schritt-Anleitung

Um das Minimum aus einem Bereich zu berechnen und dabei Nullen auszuschließen, kannst du eine benutzerdefinierte VBA-Funktion erstellen. Folge diesen Schritten:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Wähle im Projekt-Explorer das gewünschte Arbeitsblatt oder die Arbeitsmappe aus.

  3. Klicke mit der rechten Maustaste darauf und wähle "Einfügen" > "Modul".

  4. Füge den folgenden Code in das Modul ein:

    Public Function MinOhneNull(Bereich As Range) As Double
       Dim Zelle As Range
       Dim MinWert As Double
       MinWert = Application.WorksheetFunction.Max(Bereich) ' Setze einen hohen Startwert
    
       For Each Zelle In Bereich
           If Zelle.Value <> 0 Then
               If Zelle.Value < MinWert Then
                   MinWert = Zelle.Value
               End If
           End If
       Next Zelle
    
       MinOhneNull = MinWert
    End Function
  5. Speichere die Datei als Makro-aktivierte Arbeitsmappe (*.xlsm).

  6. Schließe den VBA-Editor und gehe zurück zu deinem Excel-Arbeitsblatt.

  7. Verwende die Funktion in einer Zelle, indem du folgendes eingibst:

    =MinOhneNull(D31:E121)

Diese benutzerdefinierte Funktion berechnet das Minimum im angegebenen Bereich und ignoriert alle Nullwerte.


Häufige Fehler und Lösungen

  • Fehler: Der Wert wird nicht korrekt berechnet.

    • Lösung: Stelle sicher, dass der Bereich, den du angibst, tatsächlich Werte enthält und dass die Zellen im richtigen Format (z. B. Zahl) vorliegen.
  • Fehler: Die Funktion wird nicht erkannt.

    • Lösung: Überprüfe, ob du die Datei als Makro-aktivierte Arbeitsmappe gespeichert hast. Nur dann wird die benutzerdefinierte VBA-Funktion erkannt.

Alternative Methoden

Wenn du keine VBA-Lösungen verwenden möchtest, kannst du auch eine Array-Formel in Excel verwenden:

=MIN(WENN(D31:E121<>0;D31:E121))

Um diese Formel einzugeben, drücke CTRL + SHIFT + ENTER, damit sie als Array-Formel funktioniert. Diese Methode funktioniert jedoch nur, wenn deine Excel-Version Array-Formeln unterstützt.


Praktische Beispiele

Angenommen, dein Datenbereich in Excel ist folgendermaßen gefüllt:

Datum Wert
2023-01-01 0
2023-01-02 5
2023-01-03 3
2023-01-04 0
2023-01-05 2

Um das Minimum ohne Nullwerte zu berechnen, würdest du die Funktion MinOhneNull mit =MinOhneNull(B2:B6) verwenden, was in diesem Fall 2 zurückgeben würde.


Tipps für Profis

  • Achte darauf, dass du die WorksheetFunction-Methoden in VBA kennst. Sie sind sehr nützlich, um Excel-Funktionen effizient in deinen VBA-Skripten zu nutzen.
  • Du kannst die benutzerdefinierte Funktion erweitern, um mehr Bedingungen hinzuzufügen, z. B. um nur positive Werte oder Werte innerhalb eines bestimmten Bereichs zu berücksichtigen.

FAQ: Häufige Fragen

1. Kann ich die Funktion auch auf nicht-numerische Werte anwenden?
Die aktuelle Funktion ist nur für numerische Werte konzipiert. Du kannst sie jedoch anpassen, um auch andere Datentypen zu berücksichtigen.

2. Funktioniert die VBA-Funktion in allen Excel-Versionen?
Ja, solange du eine Version von Excel verwendest, die VBA unterstützt, sollte die Funktion problemlos funktionieren.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige