Guru do Excel + Power BI

Sua dose diária de Power BI e Excel

Tópicos relacionados a códigos VBA, gravação de macros, etc.
#72448
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?
Você não está autorizado a ver ou baixar esse anexo.
Editado pela última vez por SandroLima em 21 Nov 2022 às 17:23, em um total de 3 vezes.
#72466
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".
#72467
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?
#72468
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
#72489
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?
#72490
Código: Selecionar todos
Dim k as Long
  k = 2
  Columns(k).Find (...

https://i.imgur.com/SDRkGNP.jpg

Boa tarde, pessoal. Com o auxílio de um v&[…]

Private Sub Worksheet_Change(ByVal Target As Rang[…]

https://datebest.net - visit website and win smart[…]

Não sei se entendi, mas tente mudar: De: #[…]

Tente: Valores = CALCULATE ( SUM ( Tabela[VALOR][…]

https://t.me/pump_upp - best crypto pumps on teleg[…]

Boa tarde! Foxtri Os códigos não fu[…]