Os dados no intervalo
B1:I1
são desta fórmula:=SEQUENCE(,8,DATE(2025,1,25),7)
.A fórmula completa provavelmente será de 28/12/2024 para 53 colunas - intervalos de 7 dias, dando-me a data de início de cada sábado em 2025.
Os valores na coluna A são digitados manualmente (variações do formato d/m/a ):
2/2/25-16/2/25, 02/03/2025-16 Mar 25 25/1/25-25/1/25, 15/03/25-15/03/25
Pergunta:
O que estou tentando fazer é numerar sequencialmente cada semana coberta pelos intervalos de datas na coluna A, a menos que haja um intervalo de seis semanas, caso em que a numeração deve começar em 1 novamente.
Esta fórmula transformaria os valores na célula A2
em datas reais: =DATEVALUE(TEXTSPLIT(CLEAN(A2),"-",","))
ou isso retornaria o início da semana no sábado e o fim da semana na sexta-feira:
=LET(AllDates,DATEVALUE(TEXTSPLIT(CLEAN(A2),"-",",")),
StartDates,CHOOSECOLS(AllDates,1)+1-WEEKDAY(CHOOSECOLS(AllDates,1)+1,1),
EndDates,CHOOSECOLS(AllDates,2)+1-WEEKDAY(CHOOSECOLS(AllDates,2)+1,1)+6,
HSTACK(StartDates,EndDates))
A fórmula =BYCOL($B$1#,LAMBDA(ThisDate,IF(AND(ThisDate>=$A5,ThisDate<=$B5),1,"")))
adicionaria 1 sob a semana correta para um conjunto de datas. Aqui A5
estão B5
as duas primeiras datas retornadas pela minha fórmula de data.
Eu simplesmente não consigo colocar tudo em uma fórmula organizada para cada linha, muito menos a numeração sequencial. Eu adoraria se eu pudesse apenas adicionar uma fórmula B2
e arrastar para baixo.
Qualquer sugestão é muito bem-vinda.
Acredito que isso deve funcionar. Salve esta função LAMBDA no módulo Workbook no Advanced Formula Environment.
Então use assim:
Note que no meu local, as datas são analisadas de acordo com mm/dd/aaaa. Então, alterei o texto bruto na coluna A para acomodar isso, a fim de evitar brincadeiras desnecessárias com sua fórmula DATEVALUE.
A função definida acima deve funcionar independentemente do local.
Outra maneira possível:
Isso primeiro pega sua versão de dividir suas datas de
A2
e divide as datas de inícios
e términoe
em matrizes. Em seguida, BYROW verifica se o sábado de és
igual ou menor que a data de início da sequência da semanaB1#
e o mesmo, mas maior que nae
matriz e soma o resultado (sendo1
(TRUE) ou0
(FALSE)).Em seguida, usamos SCAN para somar cumulativamente esses resultados byrow. E mostramos apenas um valor do resultado byrow que é maior que 0.
Se houver valores sobrepostos dentro de uma mesma semana, use
SCAN(,SIGN(x),SUM)
Curiosidade: Eu usei
=DATE(2025,1,SEQUENCE(,8,25,7))
paraB1#
Edição: Incluindo lacuna de 6 lógicas: