Ir ao conteúdo

Excel Criando Array de datas a partir de uma célula-strin e Fórmula TEXTSPLIT - Excel


Ir à solução Resolvido por OreiaG,

Posts recomendados

Postado

Olá pessoal, estou tentando resolver uma fórmula no excel.

 

 

Estou tentando filtrar uma celula e criar um array somente com as datas (isto é eliminando as letras).

 

Exemplo, minha celula está assim: "Date1: 01/01/2024, Date2: 02/01/2024, Date3: 03/01/2024."

Tento aplicar a fórmula : "=TEXTSPLIT(J9;", ")"

E me resulta as datas quebradas por coluna, porém as strings "Date1", "Date2", "Date3" não somem e jeito nenhum para que eu posso usar somente as datas.

 

Tentei umas fórmulas do chat gpt, como "=FILTER(TEXTSPLIT(J9;", ");ISNUMBER(--TEXTSPLIT(J9;", ")))" mas não funciona, sempre retornando "#CALC".

 

Conseguem me ajudar?

 

Valeuuu !

 

Postado

Olá, obrigado pela resposta.

Segue em anexo o modelo (em cinza é o que eu tenho hoje, em verde é como eu queria que fosse).

Se precisar de mais detalhes, só falar !

te agradeço antecipadamente !

Valeu!

Clube_Hardware_.xlsx

Postado

@tetchelex

 

Caso via VBA possa ajudar, segue o código:

 

 

Sub ExtrairDatas()
    Dim Texto As String
    Dim Datas() As String
    Dim i As Integer
    Dim StartPos As Integer
    Dim EndPos As Integer
    Dim Coluna As Integer
    
    ' Texto de exemplo na célula A2
    Texto = Range("B2").Value
    
    ' Inicializar a posição da coluna onde as datas serão colocadas
    Coluna = 4 ' Começar na coluna D
    
    ' Loop para extrair datas no formato dd-mm
    i = 1
    Do While i <= Len(Texto)
        ' Localizar o próximo padrão de data (dd-mm)
        If IsDate(Mid(Texto, i, 6)) Then
            ' Extrair a data de 5 caracteres
            Datas = Split(Mid(Texto, i, 6), ",")
            ' Colocar a data na célula correspondente
            Cells(2, Coluna).Value = Mid(Texto, i, 6)
            ' Avançar para a próxima coluna
            Coluna = Coluna + 1
            i = i + 6 ' Pular para a próxima data
        Else
            ' Continuar avançando se não for uma data
            i = i + 1
        End If
    Loop
End Sub

 

Postado

Poxa, agradeço ! mas assim, não daria para ir por fórumula mesmo? Tenho receio do arquivo ficar muito poluído, já que existem outras macros neste arquivo.

 

  • Solução
Postado

Em C2, retorna 10-01

=EXT.TEXTO(B2;LOCALIZAR("-";B2;1)-2;5)

 

 

Em D2, retorna 07-01

=EXT.TEXTO(B2;LOCALIZAR("-";SUBSTITUIR(B2;C2;"");1)+3;5)

 

 

Em E2, retorna 03-01

=EXT.TEXTO(B2;LOCALIZAR("-";SUBSTITUIR(SUBSTITUIR(B2;C2;"");D2;""))+8;5)

 

 

Em F2, retorna 02-03

=EXT.TEXTO(B2;LOCALIZAR("-";SUBSTITUIR(SUBSTITUIR(SUBSTITUIR(B2;C2;"");D2;"");E2;""))+13;5)

 

 

Se precisar, selecione C2:F2 e arraste para baixo.

  • 4 semanas depois...
Postado

@OreiaG não sei por que na segunda fórmula esta dando problema de argumentos, (poucos argumentos), em especial no parametro abaixo destacado em vermelho:

 

 

=mid((B2;SEARCH("-";REPLACE(B2;C2;"");1)+3;5)).

 

Sabe dizer o que poderia ser?

Postado

Experimente esta abaixo.

Se não resolver, então anexe o arquivo com as fórmulas e informe a versão (versão de qual país) do seu Excel.

 

=MID(B2;SEARCH("-";SUBSTITUTE(B2;C2;"");1)+3;5)

 

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...