Não há nada de errado com sua fórmula, mas talvez não seja a fórmula que você deseja usar. Há outra fórmula do Excel:
=WEEKNUM(serial_num, [return_type])
Isso retornará os resultados que você espera obter. No entanto, você deve primeiro verificar qual tipo de número de semana é mais apropriado para seu aplicativo.
Deixe-me explicar mais:
A função ISOWEEKNUM (data) funciona com base no fato de que uma semana sempre começa na segunda-feira e termina no domingo e, em seguida, define o padrão de que a primeira semana do ano é aquela semana que contém a primeira quinta-feira do ano na semana. Isso significa que os últimos dias do ano anterior podem ser rotulados como semana 1 do próximo ano.
A função WEEKNUM (date, start_day) começa a contar com a semana que contém 1 de janeiro. Portanto, 01 de janeiro é o primeiro dia da semana 1. Por padrão, novas semanas começam no domingo, então a semana 2 começa no primeiro domingo após 01 de janeiro. Você pode alterar o dia de início usando o segundo parâmetro na função. Em outras palavras, a primeira semana pode ter 1 dia, se 01 de janeiro for um sábado e o dia inicial padrão for usado. <- esse é o principal entendimento por trás da função WEEKNUM ().
Criei uma pequena planilha que contém seus valores de data e adiciona mais algumas para demonstrar a diferença:
Observe que não é apenas em 2018 que o último dia do ano é na primeira semana do próximo ano. A função ISOWEEKNUM () está funcionando bem, apenas tem uma interpretação diferente de quando a primeira semana começa.
Outra maneira de ver isso é observar as 2 funções ao longo de um período do dia que se estende desde o primeiro de janeiro:
Em 2015, o primeiro de janeiro é uma quinta-feira. A função semana ISOWEEKNUM () inclui, portanto, os últimos 3 dias em dezembro, enquanto a função WEEKNUM () inicia a semana no primeiro de janeiro, mas haverá apenas 3 dias na primeira semana para o dia padrão de início do domingo.
Espero que isso explique a diferença.