Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1304to1308
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Auf fehlende Aufgaben für jeweiligen Tag prüfen

Auf fehlende Aufgaben für jeweiligen Tag prüfen
31.03.2013 12:46:34
Judith
Hallo,
in meiner Liste soll geprüft werden, ob für den jeweiligen Tag alle Aufgaben eingetragen (ausgeführt) wurden (siehe Beispielmappe im Anhang).
https://www.herber.de/bbs/user/84634.xlsm
Kurze Erklärung:
Es gibt eine Referenzliste (Blatt Datenstamm), in dem alle zu erledigenden Aufgaben eingetragen sind (z. B. Küche wischen Dienstag).
In Blatt Bewegungsdaten werden die jeweiligen, aktuellen Aufgaben des Tages von der Person eingetragen, die die Aufgabe erledigt hat.
Über einen Button soll geprüft werden, ob für den jeweiligen Tag noch eine Aufgabe fehlt (es wird nur ein einziger Wochentag eingetragen). Falls noch eine Aufgabe fehlt, soll sie ergänzt werden.
Bis jetzt habe ich eine umständliche Formellösung (ZählenWenn = 0, Dann...).
Das Format der Blätter kann nicht geändert werden weil noch andere Berechnungen davon abhängig sin.
Ich weiß nicht genau, wo man da ansetzen soll, deswegen bitte ich Euch um Eure Hilfe. Vielleicht gibt es schon eine fertige Lösung, die ich nur noch anpassen muss. Ich weiß aber auch nicht, wonach ich suchen könnte.
Vielen Dank schon mal für Eure Vorschläge und Frohe Ostern!
Gruß

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Auf fehlende Aufgaben für jeweiligen Tag prüfen
01.04.2013 08:01:09
schauan
Hallo Judith,
wenn nur geprüft werden soll, ob etwas fehlt, würde ich es in VBA auch mit Zählenwenn tun :-(
 Hoffe, geholfen zu haben. Grüße, André aus G in T  (xls 97-2013)

AW: Auf fehlende Aufgaben für jeweiligen Tag prüfen
01.04.2013 11:27:13
Judith
Hallo André,
im Moment habe ich Formeln drin, die prüfen, ob alle Aufgaben enthalten sind. Es ist eben unschön, wenn Leerzellen auftreten wenn eben die Aufgabe schon erledigt wurde.
Danke, für Deine Antwort!
Gruß

Tabellenaufbau?
01.04.2013 11:45:01
Klaus
Hallo Judith,
du schreibst
das Format der Blätter kann nicht geändert werden
Kann ich denn eine Hilsspalte erstellen?
Statt
A - B
Bad kehren
Bad aufräumen
Bad wischen
hätte ich lieber einen eindeutigen Code, sprich
A
Bad#kehren
Bad#aufräumen
Bad#wischen
Den könnte man zB in Spalte Z (oder ZZ) per Makro schreiben und in Anschluss wieder löschen.
Bitte gib mir eine kurze Rückmeldung, ob eine Hilfsspalte in Frage käme und wo!
Grüße,
Klaus M.vdT.

Anzeige
AW: Tabellenaufbau?
01.04.2013 12:53:49
Judith
Hallo Klaus,
ja, würde gehen.
Ich dachte auch schon an "KücheWischenDienstag."
Vielen Dank!
Gruß

AW: Tabellenaufbau?
01.04.2013 13:30:50
Klaus
Hi Judith,
dies Makro sollte das gewünschte Erbringen (und noch etwas mehr).
Falls noch eine Aufgabe fehlt, soll sie ergänzt werden.
Ich konnte mir nicht vorstellen, dass die Angaben einfach drunter geschrieben werden sollen ... dann müsste man ja gar nichts mehr selber putzen, sondern einfach den Knopf drücken :-)
Darum hab ich die fehlenden als MsgBox zusammen gefasst. Unten kannst du ja statt MsgBox sonstwas mit den Daten anstellen.
(es wird nur ein einziger Wochentag eingetragen)
Das nehme ich als Gesetz! Das Makro checkt den Wochentag nur einmal, und zwar den aus der Zelle "Bewegungsdaten!C2". In den anderen Zellen von Bewegungsdaten!C3:Cxxx kann sonstwas stehen, Wochentage oder Börsenkurse oder Psalmen aus der Bibel - es wird vom Makro nicht beachtet.
Option Explicit
Sub WasFehltNoch()
Dim iColHelp As Integer
Dim wksDaten As Worksheet
Dim wksBeweg As Worksheet
Dim lRow As Long
Dim r As Range
Dim sMsg As String
Dim rMsg As Boolean
Dim rMsg2 As Boolean
iColHelp = 10 'Hilfsspalte J ist (hoffentlich) leer, sonst verschieben
Set wksDaten = Sheets("Datenstamm")
Set wksBeweg = Sheets("Bewegungsdaten")
rMsg = False
With wksBeweg
'letzte Zeile
lRow = .Cells(.Rows.Count, 1).End(xlUp).Row
'Hilfsspalte erzeugen
.Range(.Cells(2, iColHelp), .Cells(lRow, iColHelp)).FormulaR1C1 = "=RC1&""#""&RC2"
End With
With wksDaten
'Autofilter reset (Makro fehlerhaft bei gesetztem Autofilter!)
Call DoResetAutofilter(wksDaten, 1, 4, 1)
'letzte Zeile
lRow = .Cells(.Rows.Count, 1).End(xlUp).Row
'Hilfsspalte erzeugen
.Range(.Cells(2, iColHelp), .Cells(lRow, iColHelp)).FormulaR1C1 = "=IF(RC3=Bewegungsdaten! _
R2C3,RC1&""#""&RC2,"""")"
For Each r In .Range(.Cells(2, iColHelp), .Cells(lRow, iColHelp))
If r.Value = "" Then
Else
'prüfen, ob es bereits vorkommt
If Application.WorksheetFunction.CountIf(wksBeweg.Cells(1, iColHelp).EntireColumn,  _
r.Value) = 0 Then
'Einleitungssatz nur einmal
If Not rMsg Then sMsg = "Folgende Aktivitäten fehlen heute noch:" & Chr(10)
'abschließende MsgBox aktivieren
rMsg = True
'Text in MsgBox eintragen
sMsg = sMsg & .Cells(r.Row, 1).Value & " " & .Cells(r.Row, 2).Value & Chr(10)
End If
End If
Next r
End With
With wksBeweg
If rMsg Then sMsg = sMsg & Chr(10)
rMsg2 = True
'letzte Zeile
lRow = .Cells(.Rows.Count, 1).End(xlUp).Row
For Each r In .Range(.Cells(2, iColHelp), .Cells(lRow, iColHelp))
If r.Value = "" Then
Else
'prüfen, ob es bereits vorkommt
If Application.WorksheetFunction.CountIf(wksDaten.Cells(1, iColHelp).EntireColumn,  _
r.Value) = 0 Then
'Einleitungssatz nur einmal
If rMsg2 Then sMsg = sMsg & "Folgende Daten wurden zuviel eingetragen:" & Chr( _
10)
rMsg2 = False
'abschließende MsgBox aktivieren
rMsg = True
'Text in MsgBox eintragen
sMsg = sMsg & .Cells(r.Row, 1).Value & " " & .Cells(r.Row, 2).Value & Chr(10)
End If
End If
Next r
End With
'Hilfsspalten aufräumen
wksBeweg.Cells(1, iColHelp).EntireColumn.ClearContents
wksDaten.Cells(1, iColHelp).EntireColumn.ClearContents
'MsgBox anzeigen
If rMsg Then
MsgBox sMsg
Else
MsgBox ("Alle Aktivitäten vollständig ausgeführt")
End If
End Sub
'****AUTOFILTER MAKRO *****
Sub DoResetAutofilter(wksMySheet As Worksheet, iColFirst As Integer, iColLast As Integer,  _
lRowFirst As Long)
'* in case a user used another autofiler, this makro resets the autofilter to where needed.
Dim lRowLast As Long
With wksMySheet
lRowLast = .Cells(.Rows.Count, iColFirst).End(xlUp).Row
If .AutoFilterMode Then .Cells.AutoFilter 'Turns OFF Autofilter, if any
.Range(.Cells(lRowFirst, iColFirst), .Cells(lRowLast, iColLast)).AutoFilter 'Turns ON  _
Autofilter on given range
End With
End Sub
Grüße,
Klaus M.vdT.

Anzeige
AW: Tabellenaufbau?
01.04.2013 16:09:07
Judith
Hallo Klaus,
wow, das ist der Hammer. Funktioniert perfekt. Du hast vor allem an Sachen gedacht, die wären mir nie in den Sinn gekommen. Vielen, vielen Dank für die Komplettlösung!
... ein paar Tag werde ich schon brauchen um alles zu verstehen;-)
Gruß

Danke für die Rückmeldung! mit Text
02.04.2013 08:20:03
Klaus
Hallo Judith,
wow, das ist der Hammer.
*bescheiden* nein, ist es nicht. Es ist eine simple "Zählenwenn" Lösung, die sogar eine Hilfsspalte benötigt ... aber was funktioniert, darf benutzt werden ;-)
... ein paar Tag werde ich schon brauchen um alles zu verstehen;-)
das wirst du! Ich hab ja brav alles kommentiert :-)
zum verstehen, schreib mal unter jedes
With wksBeweg und With wksDaten
das Kommando .activate
und unter jedes
For Each r In .Range(...)
das Kommando r.select
Jetzt kannst du mit F8 im Einzelschrittmodus durchgehen und siehst, was Excel jeweils macht. Wenn es noch Verständnissfragen gibt, poste hier eben!
Grüße,
Klaus M.vdT.
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige