Página 1 de 1

Verificar se existe determinada string dentro de um array

Enviado: 13 Mai 2017 às 01:34
por gilbertjuniors
Pessoal, bom dia.

Tenho uma função que separa uma String (por exemplo: frases ou sequencias de códigos) usando um caracter como referência e colaca cada pedaço resultante em uma posição de um array
Exemplo:

String1: "A roupa do rei"
String2 " "
retorna o array arr:
arr(0) = "A"
arr(1) = "roupa"
arr(2) = "do"
arr(3) = "rei"

Tem alguma função do VBA que eu possa usar para verificar se exeste um determinado string dentro deste array? Exemplo

Existe "roupa" dentro do arr? Resposta: Sim na posição 1
Existe "teclado" dentro de arr? Resposta: Não


O código implementado esta similar a este
Código: Selecionar todos
Public Function separar(ByVal str1 As String, ByVal str2 As String) As Variant
    Dim WrdArray() As String
    WrdArray() = Split(str1, str2)
    separar = WrdArray
End Function
Sub principal()
    Dim arr As Variant
    linhaREF = 1
    While Not IsEmpty(ThisWorkbook.Worksheets("Folha3").Range("A" & linhaREF))
    
        Info = ThisWorkbook.Worksheets("Folha3").Range("A" & linhaREF).Value
        
        arr = separar(Info, " ")
        
        ' Daqui pra baixo posso realizar as comparações do código pré-existente
        For i = 0 To UBound(arr)
            Debug.Print arr(i)
        Next
        
        Debug.Print ""
        
        linhaREF = linhaREF + 1
    Wend
    
End Sub

Re: Verificar se existe determinada string dentro de um arra

Enviado: 13 Mai 2017 às 05:16
por gfranco
Bom dia.
Não precisa de UDF pra isso.
Sugiro utilizar função nativa do excel.

Imagem

Re: Verificar se existe determinada string dentro de um arra

Enviado: 13 Mai 2017 às 05:50
por gilbertjuniors
Franco, bom dia.

Não pode ser função nativa pois é uma analise de um relatório que varia muito e as informações são localizadas e transportadas para um banco de dados.

Também tem o fato que estes dados são tratados via VBA, dentro de array.

Necessito mesmo que seja VBA, de forma a simplificar o código hoje existente.

Verificar se existe determinada string dentro de um array

Enviado: 13 Mai 2017 às 10:30
por gfranco
Bom dia.
Sugiro postar um modelo de sua planilha ( com dados fictícios mas mesma estrutura) com uma demonstração manual do resultado esperado.
at
gfranco

Re: Verificar se existe determinada string dentro de um arra

Enviado: 13 Mai 2017 às 15:11
por osvaldomp
Experimente:
Código: Selecionar todos
        If Not IsError(Application.Match("roupa", arr, 0)) Then
         i = Application.WorksheetFunction.Match("roupa", arr, 0): MsgBox "encontrado na posição " & i
        Else: MsgBox "não encontrado"
        End If
http://www.planilhando.com.br/forum/vie ... 10#p124010

Re: Verificar se existe determinada string dentro de um arra

Enviado: 15 Mai 2017 às 00:19
por gilbertjuniors
Osvaldo só agora tive tempo de acessar a net.

Vou testar amanhã a sua solução lá no serviço.
A história é a seguinte: Um cliente da empresa que trabalho quer aproveitar os dados do sistema antigo para migrar para o nosso porém, este sistema dele não permite consulta SQL diretamente no BD, só gera relatórios em Excel.
Estes relatórios são linhas em cada célula com todos atributos porém, estes mudam de posição conforme aparecem determinadas palavras no nestas linhas de texto (como por exemplo CON e BLOC)
Este cliente tem um Excel com a relação dos códigos com a descrição dos produtos.

Teremos que vasculhar os relat´rorios atrás de valor de cada produto, corredor, setor e quantidade de estoque.
Fiz uma macro que separa estas linhas baseadas nos espaços em branco em array e irei analisar estes array.

Segue uma pequena simulação do tipo de relatório assim como o resultado que deverei obter (o relatório é apenas a coluna A do Excel)


Grato por enquanto e amanhã testarei sua sugestão de código.