Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

bestimmten Monat in Datums Zelle finden
#1
Hallo zusammen,

ich erstelle in Excel, über ein Makro, ein neues Tabellenblatt und benenne dieses nach "Monat.Jahr" (z.B. "03.2018").

Danach werden viele Daten mit gleichem Aufbau in diese Tabellenblatt kopiert.

Nun steht immer in Spalte B ab Zeile 4 ein Datum z.B. 18.02.2018 (max. 500 Zeilen).

Jetzt zu meinem Problem:
Nun möchte ich nur die Zeilen behalten die den gleiche Monat.Jahr-Wert besitzen wie der des Tabellennamen (wie im Beispiel also 03.2018)

Das bedeutet..
1)  Den Wert vom Tabellennamen in eine Variable (Blattname) schreiben =  erledigt
2)  vergleiche ab B4 die Variable (Monat.Jahr) mit der Zelle (Tag.Monat.Jahr)
3) wenn Monat Jahr übereinstimmt , nächste Zelle Prüfen (B5) - wenn keine Übereinstimmung dann ganze Zeile löschen und nächste Zelle (B5) prüfen
4) ...und so weiter...

Kann mir bitte jemand auf die Sprünge helfen?



Mein Ansatz ist bisher so..
Code:
Dim gefunden As Range
 Set gefunden = Worksheets(Blattname).Columns(2).Find _
               (what <> "??." & Blattname, LookIn:=xlValues, lookat:=xlWhole)
  If Not gefunden Is Nothing Then gefunden.EntireRow.Delete

Vielen Dank und Gruß.
Antworten Top
#2
Hallo,

als Ansatz:

- Name des Sheets auslesen und in ein xl-Datum wandeln

Ergebnis z.B.: 1.3.2018

- mit Autofilter alle älteren Datumswerte der Spalte B filtern
- .delete

mfg
Antworten Top
#3
Hi, mein Tabellenblatt beinhaltet aber nur Monat.Jahr (02.2018)

Meine Daten (Datum) aber TT.MM.JJJJ z.B. 13.01.2018....

Ich möchte von den Daten aber nur die behalten die im gleichen Monat wie das des Tabellenblattes generriet wurden.

Mit dem Code:
Code:
what <> "??." & Blattname

habe ich versucht zu sagen: 
suche nach ungleich ??.MM.JJJJ
wenn gefunden, dann ganze Zeile löschen.

Die Zwei ?? sollten als Platzhalter für Tag stehen, dies ist mir ja egal und möchte ich alle behalten sofern der Monat und das Jahr stimmt.

Gruß
Antworten Top
#4
Hallo,

dieser Code legt das neue Sheet an. XL kann den Namen automatisch in ein Datum wandeln. Dies ermöglicht im nächsten Schritt einen Autofilter mit "dieser Monat" zu setzen.


Code:
Sub Sheet_anlegen()
Dim Datum As Date
With Sheets.Add(, Sheets(Sheets.Count))
   .Name = Format(Month(Date), "00") & "." & Year(Date)
   Datum = .Name
   MsgBox Datum
End With
End Sub


mfg
Antworten Top
#5
Hallo,

hier ein Beispiel, in den nur die Daten des aktuellen Monats in ein neues Blatt mit dem gewünschten Namen kopiert werden.

mfg


Angehängte Dateien
.xlsm   SOS.xlsm (Größe: 16,45 KB / Downloads: 3)
Antworten Top
#6
Moin!
Ich nehme für so etwas den Autofilter, denn schließlich ist er genau dafür da!
Wofür um Himmels willen soll ein Monatsblatt (zu allem Überfluss auch noch in redundanter Vorhaltung) gut sein?

Fragt sich Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#7
Wie schon erwähnt:


Code:
Sub M_snb()
     Columns(2).AutoFilter 1, 7, 11
End Sub


Schau mal:

http://www.snb-vba.eu/VBA_Autofilter_en.html#L_3.3.3
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top
#8
Formel
Hallo zusammen,

leider trifft das nicht ganz auf meinen Fall zu.

Ich importiere eine Menge an Daten über mehrere Monate. Ich entscheide über eine Inputbox welchen Monat ich auswerten möchte und lege dazu ein neues Blatt an.
Code:
Suchbegriff = InputBox("Bitte erst ein neues Blatt anlegen." & vbCrLf & vbCrLf & "z.b. 01.2018")

Meistens liegt der Monat, den ich auswerten möchte 1,2,3 oder 4 Monate zurück. Also hilft mir die Formel wie z.B. "Columns(2).AutoFilter 1, 7, 11"  nicht weiter.

Ich habe also als Filter-Information nur die Variable "Blattname" bzw. kann den Namen des Sheets selber auslesen, da der Zeitraum ja 1,2,3 oder 4 Monate zurück liegen kann.

Ich könnte auch das Datum der importierten Daten für jede Zeile in "Januar" oder "Februar" uns. formatieren und in eine leere Spalte schreiben und dann mein Blattname ebenfalls in z.B. "Februar" (oder so) formatieren und dann nach Monatsnamen filtern oder löschen, dachte aber es geht bestimmt schöner.

Ist es nicht möglich anhand meines Blattnamens z.B. "02.2018" alle Daten zu filtern/behalten die als Datum 01.02.2018 bis 28.02.2018 enthalten (bei März natürlich bis 31.03.2018)?

Ihr habt recht, generell kann ich das auch mit einem Autofilter machen aber ich mache mit den Monatsdaten eine größere Auswertung (auf anderen Blättern) und falls später, warum auch immer, der Filter zurück gesetzt oder falsch geändert würde ist meine ganze Auswertung falsch. Das Risiko hätte ich nicht wenn in dem Blatt nur die richtigen Daten stehen.

Gruß
Antworten Top
#9
Hallo,

es geht.

Code:
Sub Sheet_anlegen()
Dim WS As Worksheet
Dim Datum As Date

Application.DisplayAlerts = False
Set WS = ActiveSheet
Datum = "12.3.2018"

With Sheets.Add(, Sheets(Sheets.Count))
   .Name = Format(Month(Datum), "00") & "." & Year(Datum)
End With

With WS.Cells(1).CurrentRegion
'.Parent.Activate
   .AutoFilter field:=1, Criteria1:=xlNone, Operator:=xlFilterValues, _
       Criteria2:=Array(1, CStr(Format(Datum, "MM\/DD\/YYYY")))
   .Copy Sheets(Sheets.Count).Cells(1)
   .AutoFilter
End With
Application.DisplayAlerts = True
End Sub

Es fehlt eine InputBox, in der irgendein dt Datum innerhalb des Analysemonats eingegeben wird.

mfg


Angehängte Dateien
.xlsm   SOS.xlsm (Größe: 16,96 KB / Downloads: 4)
Antworten Top
#10
Wenn die Struktur der Daten identisch ist sollte man keine unterschiedene Arbeitsblätter erstellen: 'structuring precedes coding'.
Man sollte VBA nicht benützen um eine Falsche Struktur zu korrigieren.
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste