Ir ao conteúdo
  • Cadastre-se
Juacgomes

Verificar se dados de uma coluna estão contidos em uma string

Recommended Posts

Olá pessoal, tudo bom?

 

Estou aprendendo a pouco tempo a usar o VBA e não estou conseguindo fazer uma coisa que, a princípio, parece simples.

 

Tenho uma coluna com várias linhas, por exemplo:

Água

Maça

Pera

Banana

Uva

 

E tenho uma string que possui apenas alguns desses valores, por exemplo "Água; Pera; Uva"

Para cada um dos valores da coluna, preciso verificar se ele está contido na string e retornar 1 se sim e 0 se não.

Como faço isso? Alguém pode me ajudar?

 

PS: não dá pra ser por fórmula, pois a coluna possui muitas linhas.

 

Obrigada.

Editado por Juacgomes

Compartilhar este post


Link para o post
Compartilhar em outros sites

Este exemplo, cole em um modulo da sua Pasta_de_trabalho. 

E altere os dados no local indicado: 

Const strDados = ("Água; Pera; Uva")
Const SuaColuna = "D" ' * ALTERE AQUI: sua Coluna
Const LinhaInicial = 2   ' * ALTERE AQUI: Linha inicial (da coluna), que contem dados

Sub Verificar_DadosContidos_()
    Dim i As Integer, lr As Long
    Dim strArray() As String, rng As Range, intCount As Integer

    With ActiveSheet
        lr = .cells(Rows.Count, SuaColuna).End(xlUp).Row
        Set rng = .Range(.cells(LinhaInicial, SuaColuna), .cells(lr, SuaColuna))
        rng.Offset(, 1).Value = 0
    End With

    strArray = Split(strDados, ";")
    For intCount = LBound(strArray) To UBound(strArray)

        Set rng = ActiveSheet.Columns(SuaColuna).Find(Trim(strArray(intCount)))
        If Not rng Is Nothing Then
            rng.Offset(, 1).Value = 1
        End If
    Next

End Sub

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Muito obrigada Basole!!

 Vai ajudar bastante.

:)

adicionado 40 minutos depois

Basole, deu super certo sua macro! Mas preciso de uma última ajuda. Na coluna que coloquei como exemplo podem ter várias vezes o mesmo nome, por exemplo: 

Água

Maça

Pera

Banana

Uva

Banana 

Uva

Com o código que você mandou, o 1 só é inserido na primeira vez que a fruta aparece. Preciso que ele insira todas as vezes. Pode me ajudar de novo? :)

 

Muito obrigada mais uma vez.

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tarde @Juacgomes segue abaixo as alteraçõs solicitadas: 

 

Const strDados = ("Água; Pera; Uva; Banana")
Const SuaColuna = "D" ' * ALTERE AQUI: sua Coluna
Const LinhaInicial = 2   ' * ALTERE AQUI: Linha inicial (da coluna), que contem dados

Sub Verificar_DadosContidos_()
    Dim i As Integer, lr As Long, PriEnd As String
    Dim strArray() As String, rng As Range, intCount As Integer

    With ActiveSheet
        lr = .Cells(Rows.Count, SuaColuna).End(xlUp).Row
        Set rng = .Range(.Cells(LinhaInicial, SuaColuna), .Cells(lr, SuaColuna))
        rng.Offset(, 1).Value = 0
    End With

    strArray = Split(strDados, "; ")
    For intCount = LBound(strArray) To UBound(strArray)

        Set rng = ActiveSheet.Columns(SuaColuna).Find(What:=Trim(strArray(intCount)), LookIn:=xlValues, _
                                                      LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
                                                      MatchCase:=False, SearchFormat:=False)

        If Not rng Is Nothing Then
            PriEnd = rng.Address
            Do
                rng.Offset(, 1).Value = 1
                Set rng = ActiveSheet.Columns(SuaColuna).FindNext(after:=rng)
                If rng Is Nothing Then Exit Do
            Loop While Not rng Is Nothing And rng.Address <> PriEnd
        End If

    Next

End Sub

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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 publicações 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

×