Thank you for the additional information. From the information you provided I would create a database with the following structure:
Person: ID(PK), Name, Address, etc
Rotation: ID(PK), Person(FK), Period State Date, Period End Date
Leave: ID(PK), Rotation(FK), Departure Date, Arrival Date
Allowance: ID(PK), Person(FK), Month, Monthly Allowance, Days Allowance Covers
Using that structure, you would first record the person in the database. You would then record the rotations that have been contracted. For each rotation, the person will acquire leave days; the leave days would be recorded in the leave table. Lastly, each month, the allowance can be recorded and later updated if needed.
To find out the number of days a person is on site and will receive an allowance, you could join the person table to the allowance table. You then go through each record and loop through the Leave table for the current person. Next, you can loop through each day on the allowance month and see if the person is on leave for that day. If they are not, then you increment the "days owed allowance" by one. Calculating the days the allowance covers will be VBA code that updates the "Days Allowance Covers" field.