Notifications
Clear all

Buscar String dentro de Array

5 Posts
4 Usuários
0 Reactions
1,783 Visualizações
(@gilbertjrs)
Posts: 77
Trusted Member
Topic starter
 

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

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
 
Postado : 12/05/2017 10:33 pm
felipemazz
(@felipemazz)
Posts: 59
Trusted Member
 

Cara, tenta fazer o seguitne:

Do until arr(i + 1) = ""
       i = i + 1
Loop

For i = 0 to i
     If arr(i) = "roupa" then Msgbox "Sim na posição " & i
Next

Algo do gênero... Ai você pode automatizar para o texto que vai pesquisar, do tipo jogar o "roupa" dentro de uma string, a qual o usuário digita, e pesquisa dentro do Array para você.

(Ah! Não esquece de dar o Joinha se te ajudar! hahahaha)

 
Postado : 13/05/2017 5:17 am
Syrax
(@syrax)
Posts: 160
Estimable Member
 

Usando o for loop

Sub verificar_array()
Dim arr() As String, b As Variant
txt = "A roupa do rei"
arr = Split(txt, " ")
b = "roupa"
For i = 0 To UBound(arr)
If arr(i) = b Then
MsgBox "Sim, posição " & i
End If
Next i
End Sub

Se essa resposta te ajudou e resolveu o seu problema, clique no "joinha" ao lado de citar, e não esqueça de colocar o tópico como resolvido, clicando no ✓

 
Postado : 13/05/2017 11:03 am
(@osvaldomp)
Posts: 858
Prominent Member
(@gilbertjrs)
Posts: 77
Trusted Member
Topic starter
 

Boa noite pessoal. Grato pelas dicas, amanhã testarei 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 as sugestões de código.

 
Postado : 14/05/2017 9:22 pm