Notifications
Clear all

DEFININDO PARÂMETRO PARA ULTIMA LINHA

12 Posts
4 Usuários
0 Reactions
2,078 Visualizações
(@hhansen)
Posts: 16
Active Member
Topic starter
 

Olá!
Eu utilizo o codigo abaixo para localizar a ultima linha em uma determinada tabela, eu preciso fazer uma alteração onde a ultima linha deve ser quando a coluna "B" estiver preenchida com o valor "2" (por exemplo), na verdade uma linha acima da linha desse valor.

por exemplo.

A B
PRODUTO A 10
PRODUTO B 9
PRODUTO C 8
PRODUTO D 3
PRODUTO E 2
PRODUTO F 2
PRODUTO G 2

A ULTIMA LINHA DEVE SER A LINHA 4.

CÓDIGO QUE UTILIZO:

With ActiveSheet
        LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
    End With
 
Postado : 31/10/2016 6:35 pm
brunoxro
(@brunoxro)
Posts: 698
Honorable Member
 

hhansen,

Teste o código que está no módulo 1 do arquivo em anexo.

Teste e de retorno.

att,

 
Postado : 31/10/2016 10:40 pm
(@hhansen)
Posts: 16
Active Member
Topic starter
 

Entao, esse codigo me retorna o numero da linha, eu preciso de um codigo onde uma Variavel ira receber a localização da ultima celula antes do "2" (apenas como exemplo)


http://imgur.com/a/5vYe3

 
Postado : 02/11/2016 5:15 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Ajustando a rotina indicada no modelo, teste com a rotina abaixo e veja se seria isto, nela tem as 3 opções, Qual Linha, Qual Range e O valor.

Sub UltimaLinhaAntesDo2()
    
    Dim ULinAddress
    Dim ULinValor
    Dim ULin        As Double
    Dim i           As Double: i = 1

    'Cells(Linha,Coluna), Coluna 2 = Coluna B.
    
    Do While Cells(i, 2).Value <> Empty
        
        'Compara o valor da célula.
        If Trim(UCase(Cells(i, 2).Value)) = Trim(UCase(2)) Then
            
            ULin = i - 1
            ULinAddress = Cells(i - 1, 2).Address(0, 0)
            ULinValor = Cells(i - 1, 2).Value
            'Sai do Loop
            Exit Do
        
        End If
        
        
        i = i + 1
        
    Loop
    
    '...
    
    'Como exemplo, coloco o valor da Ulin na célula D1
    'Uma Linha antes em que se encontra o valor 2
    Range("D1") = "LINHA"
    Range("D1").Offset(1, 0) = ULin
    
    'Endereço - Range em que se encontra
    Range("E1") = "RANGE"
    Range("E1").Offset(1, 0) = ULinAddress
    
    'Valor antes do 2
    Range("F1") = "VALOR"
    Range("F1").Offset(1, 0) = ULinValor
    
End Sub

[]s

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 02/11/2016 6:18 pm
(@hhansen)
Posts: 16
Active Member
Topic starter
 

Mauro, sua resposta não é o que preciso, acho que nao estou conseguindo me expressar, desculpe.

vou colocar um exemplo:

'PROCURANDO A ULTIMA LINHA
Dim LastRow As Long
    With ActiveSheet
        LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
    End With

O codigo acima me tras a ultima linha na variavel LastRow, eu quero um codigo que armazene nao a ultima linha e sim a ultima linha antes de determinado valor.

Que a Variavel LastRow seja a ultima linha antes do "2" (por exemplo), não a ultima da tabela.

 
Postado : 02/11/2016 7:42 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Realmente não compreendi, pelos dois exemplos que citou, uma vez que o numero 2 se repete 3 vezes, entendi da mesma forma que o colega bruno, ou seja uma linha antes do primeiro numero 2, que conforme mostrou no primeiro exemplo seria a linha 4 e na imagem o numero 23, e na rotina ajustada é retornado os 3 resultados, a LINHA, o RANGE e o VALOR, se não é isto, realmente não entendi qual o retorno, teria como detalhar melhor mostrando qual resultado quer.

]s

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 02/11/2016 7:57 pm
(@hhansen)
Posts: 16
Active Member
Topic starter
 

Em anexo um exemplo!

O grafico em minha planilha é gerado automaticamente, e ele sempre considera apenas valores acima de 2.

Mas nem sempre o 2 esta na mesma linha (quase nunca na verdade), preciso automatizar o RANGE do grafico de uma forma que ele sempre selecione os valores acima de 2, independente de quantos sejam.

 
Postado : 02/11/2016 9:15 pm
brunoxro
(@brunoxro)
Posts: 698
Honorable Member
 

hhansen,

Deixa ver se entendi o que você quer.

Você quer selecionar os valores de uma coluna que são maiores que dois para a montagem de um gráfico. E esse valores não necessariamente estão em ordem crescente e decrescente?

att,,

 
Postado : 04/11/2016 8:42 pm
DJunqueira
(@djunqueira)
Posts: 772
Prominent Member
 

Vc está fazendo uma grande manobra via macro p/ conseguir montar um gráfico q se adapta aos dados, mas novidade...

... vc pode fazer isso com funções!

Na sua planilha anexa substitua o valor 3 por 2 e veja como o gráfico atualiza instantaneamente.

Se sua dúvida foi respondida marque o tópico como RESOLVIDO usando o botão com marca verde.

 
Postado : 04/11/2016 9:52 pm
(@hhansen)
Posts: 16
Active Member
Topic starter
 

Vc está fazendo uma grande manobra via macro p/ conseguir montar um gráfico q se adapta aos dados, mas novidade...

... vc pode fazer isso com funções!

Na sua planilha anexa substitua o valor 3 por 2 e veja como o gráfico atualiza instantaneamente.

Excelente, mas o que foi feito? não encontrei em sua planilha como o gráfico reconhece o valor de 2, para deixar ele de fora.

 
Postado : 08/11/2016 10:07 pm
(@hhansen)
Posts: 16
Active Member
Topic starter
 

Pessoal eu o que eu quero é que o grafico se ajuste conforme a tabela gerada, só que automaticamente, pegando como parametro um valor previamente estipulado.

 
Postado : 08/11/2016 10:09 pm
DJunqueira
(@djunqueira)
Posts: 772
Prominent Member
 

Veja o Gerenciador de nomes e a célula J11.

Depois veja como foi inserido o intervalo nomeado no valor da série e do rótulo.

Se sua dúvida foi respondida marque o tópico como RESOLVIDO usando o botão com marca verde.

 
Postado : 13/11/2016 12:04 am