Vergleichen mit mehreren Bedingungen (Access)

Memo, Mittwoch, 13.03.2019, 18:23 (vor 13 Tagen)

Hallo zusammen,

ich stehe wieder einmal vor einer Herausforderung bei der ich um eure Unterstützung bitte.

Ich habe eine große Pivot Tabelle in der verschiedene Daten stehen. Diese Pivot Datei wird jede Woche neu erstellt. Mit dieser neu erstellten Datei wird diese 1 x die Woche analysiert, d.h. jede Woche wiederkehrende Ausführungen. Mit Excel Formeln habe ich mein Ziel nicht einmal ansatzweise hinbekommen. Ich hoffe Ihr könnt mir dabei helfen.

Beim Ausführen des Makros soll es folgendes tun:

Betrachte Bereich A2 bis A5000.
Lese erstmal A2 aus. Wenn in A2 "V1" steht dann springe zu Nebenspalte von V1 (also zu FM), Wenn in A2 "V2" steht dann springe zu Nebenspalte von V2 (also zu FO), Wenn in A2 "V3" steht dann springe zu Nebenspalte von V3 also zu FQ), Wenn in A2 "V4" steht dann springe zu Nebenspalte von V4 (also zu FS), Wenn in A2 "V5" steht dann springe zu Nebenspalte von V5(also zu FU) und vergleiche das Datum welches in dieser Zelle (also ZielDat.) steht mit dem aktuellen Datum + 1 Monat. Wenn das Datum in dieser Zelle das aktuelle Datum + 1 Monat übersteigt, dann nichts unternehmen.
Wenn es nicht übersteigt, dann komplette Zeile gelb füllen.
Lese A3 aus....usw

Und zum Schluss alle Gelb gefüllten Zeilen Filtern (sodass nur die gelb gefüllten Zeilen) angezeigt werden.
Wenn in den Zellen von A2 bis A5000 alles andere als V1,V2,V3,V4,V5 steht, dann nichts unternehmen.

Diese Prozedur soll für alle Zellen bis A5000 ausgeführt werden.

Von einem netten User konnte ich folgenden Code zusammenstellen:

Sub Filtern()

Dim cell, Zielzelle As Range

For Each cell In Range("A:A").SpecialCells(xlCellTypeConstants)
If cell.Value = "V1" Or cell.Value = "V2" Or cell.Value = "V3" Or cell.Value = "V4" Or cell. _
Value = "V5" Then
Set Zielzelle = Range("1:1").Find(cell.Value)
If Year(Zielzelle.Offset(cell.Row - 1, 1)) & Format(Month(Zielzelle.Offset(cell.Row - 1, _
1)), "0#") <= Year(Date) & Format(Month(Date) + 1, "0#") Then
cell.EntireRow.Interior.ColorIndex = 6
Else
cell.EntireRow.Hidden = True
End If
End If
Next cell

End Sub

Nach Ausführen des Makros tut es leider nur 1 Zeile Gelb färben, obwohl es mehrere finden sollte und danach erscheint folgende Fehlermeldung:
"Objektvariable oder With-Blockvariable nicht festgelegt. Laufzeitfehler '91'"

Ab hier komme ich leider nicht mehr weiter und hoffe auf Eure Unterstützung.

Danke an alle die etwas beitragen

VG
Memo

Vergleichen mit mehreren Bedingungen

Martin Asal @, Mittwoch, 13.03.2019, 20:31 (vor 13 Tagen) @ Memo

Hallo Memo,

Betrachte Bereich A2 bis A5000.

Wie man so etwas mit einer Schleife macht, wird in der Funktion "Erledigt" hier im Tutorial erklärt. Darin brauchst du dann wohl eine Select-Case Verzweigung:

Select Case Zelle
    Case "V1"
        'mach dies
    Case "V2"
        'mach jenes
'usw
End Select

Martin

Vergleichen mit mehreren Bedingungen

Memo, Donnerstag, 14.03.2019, 10:07 (vor 12 Tagen) @ Martin Asal

Hi Martin,

danke für die prompte Rückmeldung.

Ich habe es leider nicht so ganz verstanden wie ich deine Angabe:
Select Case Zelle
Case "V1"
'mach dies
Case "V2"
'mach jenes
usw..

in mein bestehenden Code einpflanzen soll. Die Erklärung hier im Tutorial habe ich auch nicht so ganz verstanden.

Muss ich dann quasi die "If" Anweisung komplett raus nehmen und dafür die "Select Case Zelle" Anweisung rein?

Wie sage ich der Select Case dass er wenn er in Zelle A2 den Eintrag V1 findet, soll er in die Nebenspalte von V1 springen also zu FM und überprüfen ob das Datum welches in dieser Zelle steht älter ist mit heutigem Datum + 1Monat. Falls ja nichts unternehmen. Falls nicht dann komplette Zeile Gelb füllen.
und das bis Zelle A5000, falls in dieser V1,V2,V3,V4,V5 steht.

Bin leider erst seit 2 Wochen in der VBA Welt, bin daher nicht so ganz in der Materie.

Danke für deine Unterstütung.

Gruß
Memo

Vergleichen mit mehreren Bedingungen

Martin Asal @, Donnerstag, 14.03.2019, 15:33 (vor 12 Tagen) @ Memo

Hallo Memo,

du willst als Anfänger alles auf einmal verstehen. Versuche es besser scheibchenweise ;-)

Zuerst musst du die schon erwähnte Prozodur "Erledigt" verstehen. Die zeigt dir, wie du durch die Zeilen bis A5000 gehst. Wenn du das verstanden hast, kümmere dich um Select case. Und in der Tat, das ersetzt dein chaotisches Hantieren mit vielen Ifs.

Wenn du soweit bist, dass du das verstanden hast, kannst du dir überlegen, welche Teile deines bisherigen Codes du vielleicht noch in die Struktur, die du dir so erarbeitet hast, übernehmen kannst.

Martin

Vergleichen mit mehreren Bedingungen

Memo, Donnerstag, 14.03.2019, 21:11 (vor 12 Tagen) @ Martin Asal

Hi Martin,

also ich habe versucht die Prozedur Erledigt zu verstehen.

Ich habe Sie sogar 1:1 übernommen und in excel getestet. Aber es hat sich nichts getan. Fehlermeldung kam auch nicht.

Wenn schon die praktische Ausführung nicht funktioniert wie soll ich es als Anfänger verstehen?

Ist das Beispiel vielleicht ein zu komplizierte Lösung für mein Fall ? Gibt es einfachere Methoden um mein Ziel zu erreichen?

Das Makro soll doch nur bestimmte Zellen auslesen und das Datum in einer anderen Zelle mit dem heutigen + 1 Monat vergleichen.

Lässt du mich etwa von 20 anfangen anstatt von 1? :-)

Den Code welches ich bereits habe funktioniert ja schon, aber nicht in der riesen Pivot Tabelle.

In anderen Excel Files mit derselben Bedingungen und Angaben funktioniert der Code tadellos und färbt alle Zeilen die kleiner sind als heutiges Datum + 1 Monat gelb.

Aber warum geht das nicht in der blöden Pivot Tabelle??

Beantworte mir wenigstens die Frage, aber bitte ohne die Pivot Tabelle zu verlangen, denn die Dateigröße ist viel zu groß.

Danke für deine Geduld.

schönen Restabend
Memo

Vergleichen mit mehreren Bedingungen

Martin Asal @, Freitag, 15.03.2019, 10:15 (vor 11 Tagen) @ Memo

Lässt du mich etwa von 20 anfangen anstatt von 1?

Von 2 ;-)

Du erwartest eine fertige Lösung, maßgeschneidert für genau dein Problem. Das gibt es bei mir nicht. Du bekommst die Hinweise, die du brauchst, um das Grudverständnis zu bekommen, damit du die Lösung auch verstehen kannst.

Martin

Martin

Vergleichen mit mehreren Bedingungen

Memo, Donnerstag, 14.03.2019, 22:23 (vor 12 Tagen) @ Martin Asal

Sub SelectCaseBissleVerstanden()

Dim i As Integer 'hier muss ich die Datumszellen ansprechen?
For i = 2 to 5000 'Mache die folgende Prozedur für Spalte A2 bis A5000

Select Case cells(2, 1).Value 'hier nehme ich A2 an, kann es ja noch ändern

Case V2
Cells(2, 4) 'springe zu Zelle D2 ' hier muss ich aber noch sagen, dass er das Datum in
der Zelle mit dem heutigen+1 Monat vergleicht [/i]

Case V3
Cells(2, 6) 'springe zu Zelle F2 ' hier muss ich aber noch sagen, dass er das Datum in
der Zelle mit dem heutigen+1 Monat vergleicht


Case V4
Cells(2, 8) 'springe zu Zelle H2 ' hier muss ich aber noch sagen, dass er das Datum in
der Zelle mit dem heutigen+1 Monat vergleicht

Case V5
Cells(2, 10) 'springe zu Zelle J2 ' hier muss ich aber noch sagen, dass er das Datum in
der Zelle mit dem heutigen+1 Monat vergleicht

' ErrorCase = Komme hier nicht mehr weiter.

Ist meine Vorgehensweise so korrekt?


Gute Nacht
Memo

Vergleichen mit mehreren Bedingungen

Martin Asal @, Freitag, 15.03.2019, 10:20 (vor 11 Tagen) @ Memo

Dim i As Integer 'hier muss ich die Datumszellen ansprechen?

Nein, das sind die Zeilen

For i = 2 to 5000 'Mache die folgende Prozedur für Spalte A2 bis A5000

Ich würde eher Do Loop nehmen, aber so geht es auch

Select Case cells(2, 1).Value 'hier nehme ich A2 an, kann es ja noch ändern

cells(i, 1).Value

Case V2

Case "V2"

Martin

Vergleichen mit mehreren Bedingungen

Memo, Freitag, 15.03.2019, 14:30 (vor 11 Tagen) @ Martin Asal

Hi Martin,

danke für deine Antwort :).

Kannst du mir wenigsten diese theoretische Frage beantworten:

Warum kann ich mit einer korrekt erstellten VBA Code eine Pivot Datei/Tabelle nicht bearbeiten?

In allen anderen Excel Files funkt der Code, jedoch nicht in der blödn Pivot Tabelle, die 15 MB groß ist. Warum??

Grüße
Memo

Vergleichen mit mehreren Bedingungen

Martin Asal @, Montag, 18.03.2019, 16:21 (vor 8 Tagen) @ Memo

Sorry, ich kann das Problem nicht nachvollziehen. Bei mir gibt es keine Probleme mit Pivot.

Martin

RSS-Feed dieser Diskussion
powered by my little forum