2016-10-03 4 views
-4

Ich bin ein Neuling in VBA und ich versuche, in VBA alle Termine zwischen 2 Daten zu bekommen, zum Beispiel werde ich die Funktion mit den Parametern 01-01-2015 und 15-01 aufrufen -2015, und ich werde im Gegenzug ein Array mit allen möglichen Daten erhalten, dh:Erhalten Sie alle Termine zwischen 2 Daten in VBA

Dies ist die Daten, die ich habe;

ID  Start Date End Date Code 
1234567 03-10-2016 15-10-2016 ABC_987654321 
3456789 10-09-2016 20-09-2016 ABC_123456789 

Das Ergebnis sollte wie unten sein, und sollte aufhören, wenn Leerzeichen im Starttermin findet

Array

ID  Date  Code 
1234567 03-10-2016 ABC_987654321 
1234567 04-10-2016 ABC_987654321 
1234567 05-10-2016 ABC_987654321 
3456789 10-09-2016 ABC_123456789 
3456789 11-09-2016 ABC_123456789 
3456789 12-09-2016 ABC_123456789 
3456789 13-09-2016 ABC_123456789 
3456789 14-09-2016 ABC_123456789 
3456789 15-09-2016 ABC_123456789 
3456789 16-09-2016 ABC_123456789 
3456789 17-09-2016 ABC_123456789 
3456789 18-09-2016 ABC_123456789 
3456789 19-09-2016 ABC_123456789 
3456789 20-09-2016 ABC_123456789 
+0

In Ihrer Ausgabe, wo ist 6/10, 7/10, 8/10, ... 15/10/2016? Sie können Termine verschieben und das Datum um jeweils einen Tag erhöhen. Funktioniert das nicht? Was hast du bisher versucht? Dies ist eine ziemlich einfache Sache, Sie sollten viele Tipps online finden. Bitte zeigen Sie, was Sie versucht haben, was hat/hat nicht funktioniert. – BruceWayne

+2

Daten sind Zahlen, eine für die nächste Schleife hilft. Ein bisschen Forschung würde es für dich finden. Google gegoogelt es Über 422.000 Ergebnisse (0.80 Sekunden) –

+0

@brucewayne denke o/p bedeutet bis zum aktuellen Datum (oder etwas) :) oder Enddatum, das früher evers. –

Antwort

1

ich Sie den VBA-Code für dieses Problem bin Bereitstellung, mit Kommentaren zu helfen Du verstehst den Prozess.

Bitte nehmen Sie sich Zeit, um durchzulesen und zu verstehen, was passiert. Wenn Sie also das nächste Mal auf ein Problem stoßen, wissen Sie, wo Sie anfangen sollen. Wenn Sie loslegen und stecken bleiben wollen, dann zögern Sie nicht, um Hilfe zu bitten, sondern geben Sie Informationen darüber, was Sie mit Code/Formeln versucht haben, die Sie verwendet haben.

Sub ExampleMacro() 

' Define the variables 
Dim LastRow As Long 
Dim addrows 
Dim FindDates 
Dim CountDays 
Dim adddays 
Dim i As Long 
Dim ir As Long 

' Workout number of rows containing data to process 
With Sheets("Sheet1") 
LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row - 1 
End With 

' This is the row number we want to start processing, every time the For runs, it will add another 1 to this number so the next row is processed 
addrows = 2 

' Loop through until, LastRow has been reached 
For ir = 1 To LastRow 

' Define the number of days between the two dates 
FindDates = Sheets("Sheet1").Range("B" & addrows).Value 

' Define the number of days between the two dates 
CountDays = Sheets("Sheet1").Range("C" & addrows).Value - Sheets("Sheet1").Range("B" & addrows).Value + 1 

' Define the date to enter into Data column on Sheet 2, every time it loops through the date will be increased by 1 
adddays = 0 

' Loop through until, the last date has been reached 
For i = 1 To CountDays 

' Insert a new blank row on Sheet2 - Row2, for the data to be entered 
Sheets("Sheet2").Rows("2:2").Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove 
' Put ID value of the row into Sheet2 
Sheets("Sheet2").Range("A2").Value = Sheets("Sheet1").Range("A" & addrows).Value 
' Put the date into Sheet2 
Sheets("Sheet2").Range("B2").Value = FindDates + adddays 
' Put the Code into Sheet2 
Sheets("Sheet2").Range("C2").Value = Sheets("Sheet1").Range("D" & addrows).Value 

' Increase the date by 1 day, ready for the re run of this loop 
adddays = adddays + 1 

' Go back to i and carry on until the number of CountDays has been matached. 
Next I 

' Now that all the dates for the first row of data has been processed, increase the row number by 1 
addrows = addrows + 1 

' Go back to ir and carry on until the number of rows with data has been completed 
Next ir 

End Sub 
Verwandte Themen