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

Forumthread: VBA wenn bestimmter Wert in Zelle dann schreiben

VBA wenn bestimmter Wert in Zelle dann schreiben
15.10.2018 13:36:38
Florian
Hallo Zusammen,
ich benötige eure Hilfe. Ich bin in VBA leider nicht mehr wirklich fit und stehe nun echt auf dem Schlauch bei meiner Excel Tabelle.
Zur Erläuterung:
Ich habe eine Tabelle in welcher ich Daten aufnehmen will, ähnlich wie ein Ticketsystem. Bekomme ich also ein Ticket, trage ich dies über ein Eingabefenster in Excel ein. Auf dem zweiten Tabellenblatt habe ich eine Auswertung, welche über VBA gesteuert wird. Beispiel: Ich habe in meiner Tabelle 1 (Monitor) 10 Tickets mit dem heutigen Datum. Somit wirft mir VBA auf dem Auswertungstabellenblatt eine Zusammenfassung vom heutigen Datum, d.h. 10 tickets (davon evtl 3 bearbeitet und der Rest noch Offen).
Nun zum eigentlichen Problem: Ich möchte nun auch über mein Ticketsystem Monitor (Tabelle1) meine Testtickets mit aufnehmen. Allerdings sollen diese nicht in der Auswertung auftauchen, da es nur Tests sind. Momentan wird allerdings direkt beim Datumseintrag eine Tageszusammenfassung erstellt in VBA.
Ich möchte es noch genauer definieren:
Meine Tabelle sieht wie folgt aus
Spalte A ´lfd Nr, Spalte B Offenes Ticket, Spalte C Geschl Ticket, D Datum, E Typ (entweder Incident, Test oder Request) usw
Ich möchte nun in VBA festhalten das erst eine Zusammenfassung des Tages erfolgt wenn der Typ Incident oder Request ist. Wie geht das?
Meine bisher genutzte Formel sieht so aus:
Dim Datum As Date
Dim incident As Integer
Dim clincident As Integer
Dim request As Integer
Dim clrequest As Integer
Dim z As Integer
z = 3
z2 = 4
With Worksheets(1)
Do While z= 1499 (kleiner Gleich, stellt den ges. Zellbereich dar)
If .Cells(z, 4) = "" Then
ExitSub
Else
Datum = .Cells(z, 4)
End If
Do While.Cells(z, 4) = Datum
If.Cells(z, 5) = "Incident" Then
incident = incident + 1
usw. Ich denke hier wird bereits der Fehler liegen. Allerdings komme ich einfach nicht drauf, da ich dieses Programm nur erweitere und auch nicht selbst geschrieben habe.
Hoffe ihr könnt mir helfen
LG Flo
Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA wenn bestimmter Wert in Zelle dann schreiben
15.10.2018 16:55:16
Herbert
Hallo Florian,
ohne Beispieldatei ist das nicht zu machen!
Servus
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

VBA für ein Excel-Ticketsystem: Bedingte Zusammenfassungen erstellen


Schritt-für-Schritt-Anleitung

  1. Öffne Deine Excel-Datei und gehe zum VBA-Editor, indem Du ALT + F11 drückst.

  2. Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf das Projektfenster und wähle "Einfügen" > "Modul".

  3. Kopiere den folgenden Code in das Modul:

    Sub TicketZusammenfassung()
       Dim Datum As Date
       Dim incident As Integer
       Dim request As Integer
       Dim z As Integer
    
       z = 3 ' Beginne bei Zeile 3
    
       With Worksheets(1)
           Do While z <= 1499 ' Durchlaufe bis zur Zeile 1499
               If .Cells(z, 4) = "" Then Exit Sub ' Wenn Zelle leer, beende Sub
    
               Datum = .Cells(z, 4) ' Setze Datum
    
               ' Zähle nur Incident und Request
               If .Cells(z, 5) = "Incident" Then
                   incident = incident + 1
               ElseIf .Cells(z, 5) = "Request" Then
                   request = request + 1
               End If
    
               z = z + 1 ' Nächste Zeile
           Loop
       End With
    
       ' Zusammenfassung ausgeben
       MsgBox "Anzahl Incident: " & incident & vbNewLine & "Anzahl Request: " & request
    End Sub
  4. Schließe den VBA-Editor und kehre zu Deiner Excel-Datei zurück.

  5. Führe das Makro aus: Gehe zu Entwicklertools > Makros, wähle TicketZusammenfassung und klicke auf Ausführen.

Dieser Code zählt die Tickets in Deinem Excel-Ticketsystem basierend auf dem Typ und gibt eine Zusammenfassung der Anzahl der "Incident" und "Request" Tickets zurück.


Häufige Fehler und Lösungen

  • Fehler: "Typkonflikt"
    Lösung: Überprüfe, ob die Zellen in Spalte D tatsächlich Datumswerte sind. Stelle sicher, dass sie im richtigen Format formatiert sind.

  • Fehler: "Index außerhalb des Bereichs"
    Lösung: Stelle sicher, dass Du die richtige Tabelle ausgewählt hast und dass die Tabelle mindestens 1499 Zeilen hat.

  • Makro wird nicht ausgeführt
    Lösung: Überprüfe, ob Makros in Deinen Excel-Einstellungen aktiviert sind.


Alternative Methoden

Wenn Du keine VBA-Lösungen verwenden möchtest, kannst Du auch Excel-Formeln nutzen, um die Anzahl der "Incident" und "Request" Tickets zu zählen. Verwende dazu die ZÄHLENWENN-Funktion:

=ZÄHLENWENN(E:E, "Incident")
=ZÄHLENWENN(E:E, "Request")

Diese Formeln zählen die entsprechenden Werte in der Spalte E.


Praktische Beispiele

Angenommen, Du hast folgende Daten in Deinem Excel-Ticketsystem:

lfd Nr Offenes Ticket Geschl Ticket Datum Typ
1 Ja Nein 01.01.2023 Incident
2 Ja Nein 01.01.2023 Request
3 Ja Nein 01.01.2023 Test

Mit dem VBA-Skript wird die Ausgabe für den 01.01.2023 sein:

Anzahl Incident: 1
Anzahl Request: 1

Die Testtickets werden nicht in die Zusammenfassung einbezogen.


Tipps für Profis

  • Verwende Option Explicit: Füge am Anfang Deines Moduls Option Explicit hinzu, um sicherzustellen, dass alle Variablen deklariert werden. Das hilft, Fehler zu vermeiden.
  • Erstelle eine Schaltfläche: Du kannst eine Schaltfläche in Excel hinzufügen, um das Makro mit einem Klick auszuführen.
  • Verwende aussagekräftige Kommentare: Kommentiere Deinen Code, um die Funktionsweise für Dich und andere verständlicher zu machen.

FAQ: Häufige Fragen

1. Wie kann ich das Skript anpassen, um mehr Typen zu zählen?
Du kannst einfach zusätzliche ElseIf-Bedingungen im Code hinzufügen, um weitere Typen zu zählen.

2. Funktioniert das auch in Excel Online?
VBA wird nicht in Excel Online unterstützt. Du musst die Desktop-Version verwenden, um das Skript auszuführen.

3. Was ist der Unterschied zwischen "Incident" und "Request"?
Ein "Incident" ist eine Störung, die behoben werden muss, während ein "Request" eine Anfrage für einen neuen Service oder eine Funktion ist.

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