Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: wenn-Dann funktion mit schleife

wenn-Dann funktion mit schleife
09.03.2018 18:50:20
Erwin
Hallo zusammen,
als Neuling im Bereich VBA stehe ich vor einem "großen" Problem und hoffe Ihr könnt mir helfen. Ich versuche es mal zu beschreiben. Es geht darum, dass in einer Exceltabelle (= Wirtschaftsplanung für unterschiedliche Mandanten) Zellen mit einem Programmcode (Verbindung zwischen Excel und einer Rechnungswesensoftware) gefüllt werden müssen, wenn zwei bestimmte Kriterien erfüllt sind. Der Programmcode ist "fest" in einer Zelle hinterlegt (hier H1).
Beispiel:
Wenn die Zelle D1 einen Wert >0,01 und die Zelle A1 eine 6-stellige Zahl (beginnend mit 0 + variierende Nummer) enthält, soll in die Zelle F1 der Programmcode aus Zelle H1 kopiert werden.
Wenn Zelle D1 einen Wert Das ganze muss als Schleife laufen, da die Tabelle ca. 1500 - 2000 Zeilen enthält.
Leider ist das ganze über eine einfache Wenn/Dann Formel in Excel nicht möglich, da dieser Programmcode nicht mit Excelfunktionen in einer Zelle kombinierbar ist.
Danke schon mal vorab für mögliche Lösungsvorschläge.
Gruß Erwin
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: wenn-Dann funktion mit schleife
09.03.2018 19:16:26
Daniel
Hi
naja, 6-Stellige Zahlen die mit 0 beginnen, sind eigentlich 5-Stellige Zahlen.
Wenn, dann gibt es Texte, die als ersten Buchstaben die Ziffer 0 haben und danach dann 5 Ziffern folgen.
dim Zelle as range
for each Zelle in Columns(4).SpecialCells(xlcelltypeconstants, 1)
if Zelle.Value > 0.01 then
if Zelle.Offest(0, -3).Text like "0#####" then
Zelle.Offset(0, 4).Copy Zelle.Offest(0, 2)
end if
end if
Next
Gruß Daniel
Anzeige
AW: wenn-Dann funktion mit schleife
10.03.2018 17:47:17
Erwin
Hallo Daniel,
super, vielen Dank dafür. Kurze Frage hätte ich aber, woher weiß
die Befehlszeile welche Zellen/Spalten in der Datei angesprochen
werden müssen?
Gruß
Erwin
AW: wenn-Dann funktion mit schleife
11.03.2018 09:49:24
Hajo_Zi
Hallo Erwin,
Columns(4).SpecialCells(xlcelltypeconstants, 1)
Es werden alle Zellen mit Konstanten in dem Bereich angesprochen.

Beiträge von Werner, Luc, robert, J.O.Maximo und folgende lese ich nicht.
Anzeige
;

Forumthreads zu verwandten Themen

Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Automatisches Füllen von Zellen mit VBA und Schleifen


Schritt-für-Schritt-Anleitung

  1. VBA-Editor öffnen: Drücke ALT + F11, um den VBA-Editor in Excel zu öffnen.

  2. Neues Modul erstellen: Klicke mit der rechten Maustaste auf "VBAProject (DeinWorkbookName)" und wähle "Einfügen" > "Modul".

  3. Code einfügen: Kopiere den folgenden VBA-Code und füge ihn in das Modul ein:

    Dim Zelle As Range
    For Each Zelle In Columns(4).SpecialCells(xlCellTypeConstants, 1)
        If Zelle.Value > 0.01 Then
            If Zelle.Offset(0, -3).Text Like "0#####" Then
                Zelle.Offset(0, 4).Value = Range("H1").Value
            End If
        End If
    Next Zelle
  4. Anpassungen vornehmen: Stelle sicher, dass Columns(4) die richtige Spalte (D) ist und dass Range("H1") den Programmcode enthält, den du kopieren möchtest.

  5. Makro ausführen: Schließe den VBA-Editor und führe das Makro über ALT + F8 aus.


Häufige Fehler und Lösungen

  • Fehler: "Keine Zellen gefunden"

    • Lösung: Stelle sicher, dass in der vierten Spalte tatsächlich Werte vorhanden sind, die als Konstanten gelten.
  • Fehler: "Typenübereinstimmung"

    • Lösung: Überprüfe, ob die Zellen in der vierten Spalte tatsächlich Zahlen sind und die Zelle H1 nicht leer ist.

Alternative Methoden

Wenn du nicht mit VBA arbeiten möchtest, kannst du auch die folgende Formel verwenden, um ähnliche Ergebnisse zu erzielen, allerdings mit Einschränkungen:

=WENN(UND(D1>0,01;LINKS(A1;1)="0";LÄNGE(A1)=6);H1;"")

Diese Formel kann nur in einer Zelle angewendet werden und ist nicht so effizient wie die VBA-Schleife, wenn du viele Zeilen hast.


Praktische Beispiele

Angenommen, du hast folgende Werte in deiner Tabelle:

A D H F
012345 0.02 Code123
123456 0.00 Code123
012346 0.03 Code123

Nach dem Ausführen des VBA-Codes wird F1 und F3 den Wert "Code123" enthalten, da die Bedingungen erfüllt sind.


Tipps für Profis

  • Optimierung der Schleife: Wenn du die Leistung verbessern möchtest, kannst du die Bildschirmaktualisierung deaktivieren, indem du Application.ScreenUpdating = False vor der Schleife und Application.ScreenUpdating = True nach der Schleife hinzufügst.

  • Fehlerbehandlung: Verwende On Error Resume Next, um Fehler zu ignorieren, die während der Schleifeniteration auftreten könnten.


FAQ: Häufige Fragen

1. Frage
Wie kann ich mehrere Bedingungen in meiner Schleife hinzufügen?
Antwort: Du kannst zusätzliche If-Bedingungen innerhalb der Schleife hinzufügen, um weitere Kriterien zu überprüfen.

2. Frage
Kann ich die Schleife auf eine bestimmte Anzahl von Zeilen beschränken?
Antwort: Ja, du kannst die Schleife so anpassen, dass sie nur bis zu einer bestimmten Zeile läuft, indem du die For Each-Schleife entsprechend veränderst.

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