Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Auswertung der Tabelle

Betrifft: Auswertung der Tabelle von: Art Ko
Geschrieben am: 07.10.2014 11:31:13

Hallo User,

ich fang einfach mal an zu erzählen was mein Problem ist.(Ist mein erster Post,bitte um Nachsicht)

Also ich hab mir ein Makro gebastelt welches beim Klicken in einer anderen Tablle den Namen des Kunden einträgt und gleichzeitig das heutige Datum (fixiert).

Nun will ich, das mir über das Makro(Siehe Bild 1), die Anzahl an Transporten vom heutigen Tag angezeigt wird. Mein Problem ist aber das wenn ich ein Transport bei "Stührenberg" hinzufüge es auch bei den anderen Kunden als Transport auftaucht und umgekehrt ebenso.

<a href="https://www.herber.de/bbs/user/92995.jpg">https://www.herber.de/bbs/user/92995.jpg</a>
~f~

Habe zudem das aktuelle Datum in einer anderen Zeile geschrieben mit der Funktion heute() die sich täglich aktualisiert, umso vergangene Transporte zu ignorieren. Ich selektiere momentan so
ZÄHLENWENN --> natürlich weiß ich das damit nur kontrolliert wird ob das Datum übereinstimmt wie krieg ich den Text jetzt auch noch mit rein???
Anschließend noch ein zweites Bild in der Tabelle in dem die Daten eingefügt werden. Welche Formel muss ich benutzten, um für jeden Kunden individuell, die Transportanzahl ausfindig zu machen?
~f~
<a href="https://www.herber.de/bbs/user/92996.jpg">https://www.herber.de/bbs/user/92996.jpg</a>

  

Betrifft: AW: Auswertung der Tabelle von: fcs
Geschrieben am: 07.10.2014 15:44:37

Hallo ArtKo,

für eine "vernüftige" Auswertung musst du deine Daten anders erfassen und zwar als Liste.

lfd Nr	Kunde	Datum
1	Kunde01	06.10.2014
2	Kunde02	06.10.2014
3	Kunde01	06.10.2014
4	Kunde02	07.10.2014
5	Kunde01	07.10.2014
6	Kunde01	07.10.2014
Diese Erfassung der Daten ermöglicht auch andere Auswertungen z.B. als Pivot-Tabellenbericht.

Im 2. Blatt kannst du dann die Tagesauswertung mit der Funktion ZÄHLENWENNS machen.
07.10.2014		
		
Kunde01		Kunde02
		
2		1

Formel für Kunde01:
=ZÄHLENWENNS(Tabelle1!$B$5:$B$25;Tabelle2!B3;Tabelle1!$C$5:$C$25;Tabelle2!$B$1)
Gruß
Franz


  

Betrifft: AW: Auswertung der Tabelle von: Art Ko
Geschrieben am: 08.10.2014 07:58:28

Hallo Franz,

vielen Dank für deine Hilfe, habe es grad umgesetzt und es klappt :)


  

Betrifft: AW: Auswertung der Tabelle von: Art Ko
Geschrieben am: 08.10.2014 11:11:27

Hallo Franz,

hast du zufällig hierfür auch eine Lösung?

Also wie man in Bild 1 sieht habe ich das so umgeändert wie du das vorgeschlagen hast.







Jetzt tritt bei mir das Problem auf wenn ich den Transport von Kunden "Stührenberg" löschen will benutzte ich ja folgendes Makro. Das Problem ist bei meinem geschrieben Makro das er den letzten Eintrag löscht und somit der Transport von "Stührenberg" in der Liste stehen bleibt.






Gibt es dazu ne gute Lösung? Er Soll immer den letzten Transporteintrag vom ausgewählten Kunden löschen







~f~

Gruß

Art Ko


  

Betrifft: AW: Auswertung der Tabelle von: fcs
Geschrieben am: 08.10.2014 11:48:57

Hallo Art Ko,

nachfolgend Makros, wie du den letzten Eintrag zu einem Kunden löschen kannst.

Gruß
Franz

Sub LoschGK11SB()
  Call LoschGK11(strName:="Stührenberg")
End Sub

Sub LoschGK11RuagOPH()
  Call LoschGK11(strName:="Ruag (Oberpfaffenhoffen)")
End Sub

Sub LoschGK11(strName As String)
  Dim wks As Worksheet
  Dim Zeile As Long
  Set wks = Worksheets("Tabelle2")
  
  With wks
    'letzte Zeile mit Inhalt in Spalte C
    Zeile = .Cells(.Rows.Count, 4).End(xlUp).Row
    Do
      If Zeile <= 3 Then
        MsgBox "Name """ & strName & """ mit heutigem Datum in " & wks.Name & " nicht gefunden." _

        Exit Do
      End If
      If .Cells(Zeile, 3).Text = strName And .Cells(Zeile, 4).Value = Date Then
        .Range(.Cells(Zeile, 3), .Cells(Zeile, 4)).ClearContents
        Exit Do
      End If
      Zeile = Zeile - 1
    Loop
  End With
End Sub



  

Betrifft: AW: Auswertung der Tabelle von: Art Ko
Geschrieben am: 08.10.2014 11:56:45

Danke, klappt SUPER!!!!


  

Betrifft: AW: Auswertung der Tabelle von: Art Ko
Geschrieben am: 08.10.2014 12:11:38

Hallo Franz,

ein letztes mal benötige ich bitte deine Hilfe.

Für Gk11 hat das super geklappt und der Tabelle 2 Spalte C.

Nun geht meine Liste weiter.



Wie krieg ich das selbe für GK 12 hin er muss jetzt aber 2 spalten weiter nach rechts in der Tabelle 2.




Gruß

Art Ko


  

Betrifft: AW: Auswertung der Tabelle von: fcs
Geschrieben am: 08.10.2014 12:41:40

Hallo Art Ko,

dann übergibt man sinnvoller Weise die Spalte mit dem Namen als zusätzlichen Parameter, so dass die Löschungen über eine Sub durchgeführt werden können.

Gruß
Franz

Sub LoschGK11SB()
  Call LoschGK11(strName:="Stührenberg", SpalteName:=3) 'Name in Spalte C
End Sub

Sub LoschGK12SB()
  Call LoschGK11(strName:="Stührenberg", SpalteName:=5) 'Name in Spalte E
End Sub

Sub LoschGK11RuagOPH()
  Call LoschGK11(strName:="Ruag (Oberpfaffenhoffen)", SpalteName:=3) 'Name in Spalte C
End Sub

Sub LoschGK11(strName As String, SpalteName As Long)
  Dim wks As Worksheet
  Dim Zeile As Long
  Set wks = Worksheets("Tabelle2")
  
  With wks
    'letzte Zeile mit Inhalt in Spalte C
    Zeile = .Cells(.Rows.Count, SpalteName).End(xlUp).Row
    Do
      If Zeile <= 3 Then
        MsgBox "Name """ & strName & """ mit heutigem Datum in " _
              & wks.Name & " nicht gefunden."
        Exit Do
      End If
      If .Cells(Zeile, SpalteName).Text = strName _
              And .Cells(Zeile, SpalteName + 1).Value = Date Then
        .Range(.Cells(Zeile, SpalteName), .Cells(Zeile, SpalteName + 1)).ClearContents
        Exit Do
      End If
      Zeile = Zeile - 1
    Loop
  End With
End Sub



  

Betrifft: AW: Auswertung der Tabelle von: Art Ko
Geschrieben am: 08.10.2014 15:32:41

Hallo Franz,
Super nochmal vielen Dank klappt alles Tip Top!

Gruß

Art Ko


  

Betrifft: AW: Auswertung der Tabelle von: Art Ko
Geschrieben am: 09.10.2014 11:38:49

Hallo Franz,

bis jetzt klappt alles Super nur das "Formatieren" nimmt SEHR viel Zeit in anspruch.





Da ich um die 200 GK habe und jeweils 16 potenzielle Kunden, ist es sehr aufwendig für z.b GK 11 jeweils 16 Makros fürs einfügen eines Transportes und 16 Makros fürs Löschen des Transportes zu erstellen und dann auch noch der SChaltfläche zuzuordnen. Und das für 200 GK jeweils 32 Makos.

Für das hinzufügen, von eimem Transport, benutzte ich folgendes Makro




Kann man hierdraus auch ein einheitsmakro machen wie beim löschen ?


Gruß

Art Ko


  

Betrifft: AW: Auswertung der Tabelle von: Art Ko
Geschrieben am: 09.10.2014 12:09:56

Hallo Franz,

ist es vielleicht logischer die Tabelle so aufzubauen?




Das Grüne trägt der Anwender an.
Jetzt will ich das der Name des Kunden, in dem Fall stührenberg, in der " Tabelle 2 " an der Stelle Gk 11 eingetragen wird und das 5 mal. Das heißt irgendwie muss Excel den eingetragenen GK prüfen diesen in "Tabelle 2 suchen" und 5 mal eintragen mit dem heutigen Datum. Ist so etwas möglich?






In diesem Fall müsste ich nur 1 Makro benutzen statt 6400 stück :/



Gruß

Art Ko


  

Betrifft: AW: Auswertung der Tabelle von: fcs
Geschrieben am: 09.10.2014 15:56:07

Hallo Artko,

diese Art der Dateneingabe ist wesentlich effektiver in der Umsetzung per Makro.
Für GK und Kunde solltest du zusätzlich Auswahllisten erstellen und dann per verknüpften Comboxen aus den Active-X-Steuerelementen die Werte in den Zellen eintragen/auswählen.

Noch ein Tipp: verwende hier keine verbundenen Zellen, sondern mach die Spalten etwas breiter.
Verbundenen Zellen erschweren manchmal bis oft das Arbeiten per Makro und auch die eine oder ander Excelfunktion wird dadurch gestört.

Das löschen eines Eintrags kann man natürlich in ähnlicher Weise auf ein einziges Makro zusammenführen.

Gruß
Franz

Sub prcAuswerten()
  Dim varGK, AnzTrans As Long, strKunde As String
  Dim Zelle As Range, Spalte As Long, Zeile As Long
  
  With Worksheets("Tabelle1")
    varGK = .Range("A4").Value
    AnzTrans = .Range("B4").Value
    strKunde = .Range("C4").Text
  End With
    
  If varGK = "" Then
    MsgBox "Bitte GK eintragen/auswählen", vbOKOnly, "Prüfung Eingaben"
    Exit Sub
  End If
  If AnzTrans < 1 Then
    MsgBox "Anzahl der Transporte muss >=1 sein", vbOKOnly, "Prüfung Eingaben"
    Exit Sub
  End If
  If strKunde = "" Then
    MsgBox "Bitte Kunde eintragen/auswählen", vbOKOnly, "Prüfung Eingaben"
    Exit Sub
  End If
  
  With Worksheets("Tabelle2")
    'Spalte mit GK in Zeile 1 suchen
    Set Zelle = .Rows(1).Find(what:=varGK, LookIn:=xlValues, lookat:=xlWhole)
    If Zelle Is Nothing Then
      MsgBox "GK """ & varGK & """ in Tabelle2 nicht gefunden!"
    Else
      Spalte = Zelle.Column
      Zeile = .Cells(.Rows.Count, Spalte).End(xlUp).Row
      Do Until AnzTrans = 0
        Zeile = Zeile + 1
        .Cells(Zeile, Spalte) = strKunde
        .Cells(Zeile, Spalte + 1) = Date
        AnzTrans = AnzTrans - 1
      Loop
    End If
  End With
End Sub




Sub prcEintragLoeschen()
  Dim varGK, strKunde As String
  Dim Zelle As Range, Spalte As Long, Zeile As Long
  
  With Worksheets("Tabelle1")
    varGK = .Range("A4").Value
    strKunde = .Range("C4").Text
  End With
    
  If varGK = "" Then
    MsgBox "Bitte GK eintragen/auswählen", vbOKOnly, "Prüfung Eingaben"
    Exit Sub
  End If
  If strKunde = "" Then
    MsgBox "Bitte Kunde eintragen/auswählen", vbOKOnly, "Prüfung Eingaben"
    Exit Sub
  End If
  
  With Worksheets("Tabelle2")
    'Spalte mit GK in Zeile 1 suchen
    Set Zelle = .Rows(1).Find(what:=varGK, LookIn:=xlValues, lookat:=xlWhole)
    If Zelle Is Nothing Then
      MsgBox "GK """ & varGK & """ in Tabelle2 nicht gefunden!"
    Else
      Spalte = Zelle.Column
      Zeile = .Cells(.Rows.Count, Spalte).End(xlUp).Row
      Do
        If Zeile <= 3 Then
          MsgBox "Kein Eintrag zu """ & varGK & """ und Kunde """ & strKunde & """ gefunden!."
          Exit Do
        End If
        If .Cells(Zeile, Spalte) = strKunde And .Cells(Zeile, Spalte + 1) = Date Then
          .Cells(Zeile, Spalte).ClearContents
          .Cells(Zeile, Spalte + 1).ClearContents
          Exit Do
        End If
        Zeile = Zeile - 1
      Loop
    End If
  End With

End Sub



  

Betrifft: AW: Auswertung der Tabelle von: Art Ko
Geschrieben am: 10.10.2014 08:11:39

Guten Morgen Franz,

du bist einfach mein Held. Es klappt einfach PERFEKT! Ich danke dir wirklich sehr.
Hoffe ich kann dir irgendwann auch mal helfen :).

du bist auf jeden fall, ab jetzt, mein Excel Notruf wenn das für dich in Ordnung ist :D.

Gruß

Art Ko


 

Beiträge aus den Excel-Beispielen zum Thema "Auswertung der Tabelle"