2017-03-21 3 views
0

hoffe, ich kann jede Hilfe zu diesem .. Ich habe versucht, Datensätze zu zählen, die zwei Termine Kriterien erfüllen (Datum Kriterien sind dynamisch, so wird sich ändern, ich habe es auf dem nächsten Blatt aus den Daten hier ist Code, den ich zu laufen bin versucht, die mich leer Ergebnis ist hier zu bringen, ist mein Code, die ich gesammelt haben bisher Makro weiter:count Datensätze von zwei Datumskriterien

Worksheets("Data").Select 
Range("A1").Select 
Range(Selection, Selection.End(xlToRight)).Select 
Selection.AutoFilter 
ActiveSheet.Range("$A$1:$BN$235").AutoFilter Field:=4, Criteria1:="=COUNTIFS(DOB," >= "&R[1]C,DOB,""<=""&R[1]C[1])" 

ActiveWindow.SmallScroll Down:=-9 
Range("A1").Select 
Range(Selection, Selection.End(xlDown)).Select 
Range(Selection, Selection.End(xlToRight)).Select 
Selection.Copy 
Set NewSheet = Sheets.Add(After:=Worksheets("error")) 
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False 
NewSheet.Name = "DOBrange" 
NewSheet.Range("A1").Select 
Application.CutCopyMode = False 

Worksheets("Data").Select 
Worksheets("Data").Range("A1").Select 
+0

wenn ich gleiche tue countifs Formel in Excel unter Verwendung der gleichen Kriterien und Daten Ich erhalte genaue Zählung von Daten mit diesen beiden Kriterien Daten, beim Ausführen von VB-Code kommt es als leeres Ergebnis - es muss etwas anderes als Kriterien verwenden, da nicht als Fehler kommen – vj12

+0

Datumskriterien ist in Blatt Name "Fehler" in a20 & b20 – vj12

Antwort

2

Sie scheinen zu versuchen, Zeilen zu filtern, indem Werte zwischen zwei Terminen Sie jedoch Ihren Kriterien zu sagen Sie möchte Werte auswählen, die gleich sind mit etwas (das scheinbar versucht, alle Werte gleich der Anzahl der Werte zu geben, die zwischen zwei anderen Daten liegen. Wenn also fünf Daten innerhalb des Bereichs liegen, versuchen Sie Filter zu geben, um alle Werte anzuzeigen das sind 5).

Der richtige Weg, um Werte zwischen zwei Daten durch wäre wählen sagen:

ActiveSheet.Range("$A$1:$BN$235").AutoFilter _ 
        Field:=4, _ 
        Criteria1:=">=" & Worksheets("Error").Range("A20").Value2, _ 
        Operator:=xlAnd, _ 
        Criteria2:="<=" & Worksheets("Error").Range("B20").Value2 

(sind die beiden Tage, unter der Annahme, in Zellen A20 und B20 von Arbeitsblatt „error“)

+0

Haben Sie es getestet? manchmal sind die "Dates" ein bisschen schwierig. Ich habe herausgefunden, dass du normalerweise "Cdbl" ("Dates") brauchst, um es prima funktionieren zu lassen. –

+0

@Shairado - hat diesen spezifischen Code nicht getestet, aber mit 'ActiveSheet.Range (" $ A $ 1: $ G $ 28 ") getestet. AutoFilter Field: = 4, Criteria1: ="> = "& Cells (35, 10) .Wert2, Operator: = xlAnd, Criteria2: = "<=" & Zellen (36, 10) .Wert2'. Meine Spalte D wurde mit Daten beginnend mit Heute und Hinzufügen von 1 festgelegt, und meine J35 und J36 wurden auf 31/03/2017 und 5/04/2017 festgelegt. – YowE3K

+0

Hoffen wir, dass der PO seine Zellen formatiert hat, wie du bist :) Ich fand, dass die meisten Fragen einige "verrückte" Daten und numerische Formatierungen enthalten, du wirst schwitzen, um das ** V ** hier zu bekommen;) –

0

Sie haben Probleme bei der Kriterien1 Anweisung

Criteria1:="=COUNTIFS(DOB," >= "&R[1]C,DOB,""<=""&R[1]C[1])" 

Sie können Sehe, dass die Textfarbe von> = schwarz ist, während die andere braun ist, so wird Vba zwischen "= C OUNTIFS (DOB, "und" & R [1] C, DOB, "< =" "& R [1] C [1])" dann ist criteria1 wahr oder falsch. so dass Sie nicht das Ergebnis erhalten ändern sich je nach Ihrem Zustand

Der folgende Code kann dieses Problem beheben

Criteria1:="=COUNTIFS(DOB, "">=""" & R[1]C & ",DOB,""<=""" & R[1]C[1] & ")" 
+0

Ich habe versucht, diesen Code, aber seine comi ng als syntx error, es gibt ein problem beim referenzieren, da ich sehen konnte, dass sich die kriterien nicht auf den beabsichtigten stand beziehen – vj12

+0

Kannst du mir die Datei schicken? –

+0

Plz teilen Sie Ihre E-Mail – vj12