diff options
-rw-r--r-- | sc/source/core/tool/interpr2.cxx | 22 |
1 files changed, 13 insertions, 9 deletions
diff --git a/sc/source/core/tool/interpr2.cxx b/sc/source/core/tool/interpr2.cxx index bd255fc83290..d2877189fe16 100644 --- a/sc/source/core/tool/interpr2.cxx +++ b/sc/source/core/tool/interpr2.cxx @@ -513,14 +513,16 @@ void ScInterpreter::ScWorkday_MS() size_t nRef = 0; while ( nDays ) { - while ( nRef < nMax && nSortArray.at( nRef ) < nDate ) - nRef++; - if ( !( nRef < nMax && nSortArray.at( nRef ) == nDate ) || nRef >= nMax ) - nDays--; - do + { ++nDate; + } while ( bWeekendMask[ GetDayOfWeek( nDate ) ] ); //jump over weekend day(s) + + while ( nRef < nMax && nSortArray.at( nRef ) < nDate ) + nRef++; + if ( !( nRef < nMax && nSortArray.at( nRef ) == nDate ) || nRef >= nMax ) + nDays--; } } else @@ -528,14 +530,16 @@ void ScInterpreter::ScWorkday_MS() sal_Int16 nRef = nMax - 1; while ( nDays ) { + do + { + --nDate; + } + while ( bWeekendMask[ GetDayOfWeek( nDate ) ] ); //jump over weekend day(s) + while ( nRef >= 0 && nSortArray.at( nRef ) > nDate ) nRef--; if ( !( nRef >= 0 && nSortArray.at( nRef ) == nDate ) || nRef < 0 ) nDays++; - - do - --nDate; - while ( bWeekendMask[ GetDayOfWeek( nDate ) ] ); //jump over weekend day(s) } } PushDouble( ( double ) ( nDate - nNullDate ) ); |