Página 1 de 1

{RESOLVIDO] Localizar Linhas dentro de um intervalo

Enviado: 07 Nov 2022 às 15:07
por SandroLima
Boa tarde, pessoal.

Estou tentando fazer um macro para extrair dados de uma Nota de Corretagem e preciso de ajuda.

Preciso que a macro localize o número da Linha Inicial da Nota de Corretagem (no caso do exemplo linha 5) e as Linhas Inicial e Final onde estão relacionados os ativos (no caso do exemplo da planilha anexa seriam as linhas 27 e 33) e retorne o nº da linha.

Inseri um "contador" referente às diferença entre a Linha Inicial e Final das operações da Nota de Corretagem dentro da macro e preciso que a macro insira a quantidade de linhas referente a quantidade de operações no banco de Dados.

Coloquei uma tabela na cor Azul onde ela deve inserir a quantidade de linhas conforme a quantidade de operações.

Logo abaixo inseri uma tabela na cor verde com o resultado desejado.

No esboço da macro deixei comentado as necessidades da macro.

Alguém poderia me ajudar ou teria outra ideia para alcançar o resultado desejado?

Re: Localizar Linhas dentro de um intervalo

Enviado: 09 Nov 2022 às 17:55
por SandroLima
Alguém pode me ajudar?

Preciso retornar o número da primeira e a última linha da coluna B que começa com a expressão "1-Bovespa".

Re: Localizar Linhas dentro de um intervalo

Enviado: 11 Nov 2022 às 12:53
por SandroLima
Bom dia.

Tentei da seguinte maneira:
Código: Selecionar todos
With Plan_Origem
        '.Range("B1:B100").Select
        Ini_Lin_Ativo = .Range("B1:B100").Find("1-BOVESPA").Row
    End With
Mas não deu certo.

Alguém poderia me dar alguma sugestão?

Preciso encontrar o número da Primeira e da Última Linha que começam com "1-BOVESPA".

Re: Localizar Linhas dentro de um intervalo

Enviado: 11 Nov 2022 às 16:14
por SandroLima
Cheguei a essa macro:
Código: Selecionar todos
Sub BDados()
    
    Dim Plan_NC As Worksheet
    Dim Txt_LinhaAtivos As String
    
    Dim Lin As Long, Ult_Lin As Long
    Dim Counter As Long
    Dim IniLin_Ativos As Long, UltLin_Ativos As Long
    
    Set Plan_Origem = Sheets("TEMP (NC)")
    
    Txt_LinhaAtivos = ("*" & "1-BOVESPA" & "*")
    
    Ult_Lin = Plan_Origem.Range("B" & Cells.Rows.Count).End(xlUp).Row
    
    Counter = 0
        
    With Plan_NC.Range("B:B")
        
        For Lin = 1 To Lin = Ult_Lin
            
            'Se Localizar a expressão "1-BOVESPA" então
        
            'IniLin_Ativos = Lin        'Onde IniLin_Ativos é a linha em que ocorrer a expressão "1-BOVESPA" pela primeira vez
            'Counter = Counter +1       'Contador para a quantidade de vezes que ocorrer a expressão "1-BOVESPA"
            
            'End if
            
        Next Lin
        
    End With
    
    UltLin_Ativos = IniLin_Ativos + Counter - 1
    
    Set Plan_NC = Nothing
    
End Sub
São 2 necessidades:

1 - Preciso que a macro encontre a linha em que ocorre a expressão "1-BOVESPA" pela primeira vez na coluna B da planilha
2 - Contar quantas em quantas linhas ocorre a expressão "1-BOVESPA"

Podem me ajudar a finalizar?

Re: Localizar Linhas dentro de um intervalo

Enviado: 12 Nov 2022 às 10:48
por osvaldomp
Código: Selecionar todos
MsgBox [B:B].Find("1-BOVESPA").Row
MsgBox Application.CountIf([B:B], "1-BOVESPA*")
MsgBox [B:B].Find("1-BOVESPA", , , , , xlPrevious).Row

Re: Localizar Linhas dentro de um intervalo

Enviado: 12 Nov 2022 às 13:20
por SandroLima
Muito obrigado, osvaldomp.
Atende perfeitamente.
Tenha um excelente final de semana!

Re: [RESOLVIDO] Localizar Linhas dentro de um intervalo

Enviado: 21 Nov 2022 às 14:09
por SandroLima
Boa tarde, osvaldomp e demais colaboradores

Há como eu substituir
Código: Selecionar todos
MsgBox [B:B].Find("1-BOVESPA").Row
MsgBox Application.CountIf([B:B], "1-BOVESPA*")
MsgBox [B:B].Find("1-BOVESPA", , , , , xlPrevious).Row
a expressão
Código: Selecionar todos
[B:B]
por alguma variável?

Pergunto pq vou usar o apontamento da coluna em várias linhas do Código e a medida que a tabela aumente a coluna de referência pode alterar. No momento é a coluna U mas pode ser alterado e eu queria apontar uma variável para usar em todas as linhas de uma vez.

Tentei algo do tipo:

Dim Plan as Worksheet
Dim rng_Col as range
Dim str_NC as String

'rng_Col = Plan.[U:U]
str_NC = "NOTA DE CORRETAGEM"

Lin = Plan.[U:U].Find(str_NC).Row
'Lin = rng_Col .Find(str_NC).Row

Mas não deu certo. Como eu poderia utilizar uma variável para isso?

Re: Localizar Linhas dentro de um intervalo

Enviado: 21 Nov 2022 às 16:33
por osvaldomp
Código: Selecionar todos
Dim k as Long
  k = 2
  Columns(k).Find (...

Re: Localizar Linhas dentro de um intervalo

Enviado: 21 Nov 2022 às 17:22
por SandroLima
Excelente, osvaldomp.

Muito obrigado!