I don't understand your tables... Column c,d,e are years? If there are, what years?
I was going to post my code for calculating DST, but in my country winter time is from last Sunday in October to last Sunday in March.
Last Sundays are on same date every 28 years, in fact all days in week are on same day in month every 28 years.
So just build 2 lookup table for 28years. And then use just Year//28 to search for date in that year.
If you look hard you can find link between day in March and day in October.
Here is code for that:
Code:
  
    Tmp=Year 'Use less code space than Year//28 in lookup table
    WHILE Tmp>27
        Tmp=Tmp-28
    WEND
    LOOKUP Tmp,[Dates in march for 28 years],Tmp'March
    IF Month=10 THEN  'October
        Tmp=Tmp-4
        IF Tmp<25 THEN Tmp=Tmp+7
    ENDIF
It worked for me, hope that this help.
And using DST flag can complicate life, so I just move hours up or down.