Página 1 de 1

Registrar o maior valor de uma célula variável

Enviado: 30 Mar 2020 às 20:24
por WagnerF
Boa noite!

Tenho uma planilha baseada em API com células atualizadas automaticamente.
Preciso registrar em outra célula (mesma linha) sempre o maior valor atingido.
Obs.: Valores oscilam muito.
Alguém pode me ajudar?

Antecipo agradecimentos!

Re: Registrar o maior valor de uma célula variável

Enviado: 31 Mar 2020 às 06:47
por osvaldomp
Talvez seja possível via macro.
Se houver interesse em tentar esse tipo de solução então disponibilize aqui no fórum uma amostra do seu arquivo Excel com alguns dados e com o resultado desejado. Informe em quais células os valores mudam automaticamente e informe como a mudança ocorre: via fórmula, via macro, via link DDE, ... Informe também se as mudanças são temporizadas e qual o intervalo.

Re: Registrar o maior valor de uma célula variável

Enviado: 31 Mar 2020 às 13:11
por WagnerF
Boa tarde!

Fiz um exemplo simples já que a planilha
é extensa.

Agradeço sua atenção!

Re: Registrar o maior valor de uma célula variável

Enviado: 31 Mar 2020 às 14:57
por osvaldomp
Instale uma cópia do código abaixo no módulo da planilha, assim:
1. copie o código daqui
2. clique com o direito na guia da Planilha1 e escolha 'Exibir Código'
3. cole o código na janela em branco que vai se abrir
4. feito! 'Alt+Q' para retornar para a planilha e testar
Código: Selecionar todos
Private Sub Worksheet_Calculate()
 If [B1] > [F1] Then [F1] = [B1]
End Sub
funcionamento - a cada recálculo da planilha o código poderá atualizar o conteúdo de F1 conforme o critério estabelecido por você

obs. - após instalar o código conecte o API e observe se o conteúdo de F1 se atualiza; se houver alguma fórmula na planilha que faça referência direta ou indireta a B1 aí o recálculo será executado e irá disparar o código; no entanto, se F1 não se atualizar então coloque em qualquer célula vazia =B1, isso irá provocar o recálculo a cada atualização de B1.

Re: Registrar o maior valor de uma célula variável

Enviado: 31 Mar 2020 às 17:51
por WagnerF
Boa tarde!

Muito bom!
Funcionou!
A planilha tem 207 linhas e preciso que essa rotina se aplique a todas
elas.
Ex.: B1 a B207 e F1 a F207

Pode me ajudar novamente:
Mais uma vez, obrigado!

Re: Registrar o maior valor de uma célula variável

Enviado: 31 Mar 2020 às 18:01
por WagnerF
Boa noite!

Me lembrei de um detalhe:
- As linhas mudam de posição conforme valor na ordem decrescente
(índice; corresp que já está funcionando).

Grato!

Re: Registrar o maior valor de uma célula variável

Enviado: 31 Mar 2020 às 18:18
por osvaldomp
WagnerF escreveu:A planilha tem 207 linhas e preciso que essa rotina se aplique a todas
elas.
Ex.: B1 a B207 e F1 a F207
Qual será o critério?
F1 = maior valor de B1
F2 = maior valor de A2
...
F207 = maior valor de B207
É isso?


O link insere quantos valores de cada vez na coluna B ? Um valor? Onde? 207 valores, ou seja, B1:B207 de uma vez?
É necessária a descrição completa e exata de todo o processo.
Para você está tudo claro, para nós, nada.
WagnerF escreveu: Me lembrei de um detalhe:
- As linhas mudam de posição conforme valor na ordem decrescente
(índice; corresp que já está funcionando).
Não entendi.
Vale para este item o comentário que fiz acima
.

Re: Registrar o maior valor de uma célula variável

Enviado: 31 Mar 2020 às 18:33
por WagnerF
Boa noite!

Me desculpe e por favor, se possível, que a coluna
F1 F207 inicie com 0,0000

Grato!!!

Re: Registrar o maior valor de uma célula variável

Enviado: 31 Mar 2020 às 18:56
por WagnerF
Boa noite!

São várias colunas atualizadas automaticamente, mas a que
necessito nesse caso específico como base é a coluna B (de B1 a B207).
Nessa coluna ( B ) devo considerar que todos os valores são atualizados,
de 1 em 1m.
Então, ficaria assim:
F1 = Sempre o maior valor de B1
F2 = Sempre o maior valor de B2
F3 = Sempre o maior valor de B3
e assim, sucessivamente até a linha 207, ou seja:
F207 = sempre o maior valor de B207

Mais uma vez, desculpas e muito obrigado pela atenção!!!

Re: Registrar o maior valor de uma célula variável

Enviado: 31 Mar 2020 às 19:02
por WagnerF
"O link insere quantos valores de cada vez na coluna B ? Um valor? Onde? 207 valores, ou seja, B1:B207 de uma vez?
É necessária a descrição completa e exata de todo o processo.
Para você está tudo claro, para nós, nada."

Insere um valor de cada vez ( a cada minuto ) em toda a coluna B ( valores diferentes ) ou seja,
a coluna B é preenchida com novos valores a cada atualização!

Me desculpe, sei que sem a planilha fica difícil mas como disse, ela é extensa!
Sempre agradecido!!!

Registrar o maior valor de uma célula variável

Enviado: 31 Mar 2020 às 19:04
por WagnerF
Simplificando: Insere 207 valores novos na coluna B a cada minuto.

Re: Registrar o maior valor de uma célula variável

Enviado: 31 Mar 2020 às 19:10
por osvaldomp
osvaldomp escreveu:... se F1 não se atualizar então coloque em qualquer célula vazia =B1, ...
O código rodou com ou sem este recurso ?

Registrar o maior valor de uma célula variável

Enviado: 31 Mar 2020 às 19:25
por WagnerF
Tive que colocar o =B1 ...

Re: Registrar o maior valor de uma célula variável

Enviado: 31 Mar 2020 às 19:40
por osvaldomp
Coloque o código abaixo no lugar do anterior e no lugar de =B1 coloque =B207.
Como você não esclareceu sobre as fórmulas existentes então eu não sei qual será o resultado, pode ser que o código entre em Loop interminável por causa do recálculo provocado pelas fórmulas. Se isso ocorrer, e antes de derreter o processador, aperte Ctrl+Break, se não parar chute a tomada ... ;)
Código: Selecionar todos
Private Sub Worksheet_Calculate()
 Dim c As Range
  For Each c In Range("F1:F207")
   If c.Value < c.Offset(, -4).Value Then c.Value = c.Offset(, -4).Value
  Next c
End Sub
Se você quiser fazer um teste inicial com poucas células então altere F207 para F10, por exemplo.

Registrar o maior valor de uma célula variável

Enviado: 31 Mar 2020 às 19:54
por WagnerF
Ok! Vou testar agora.
Grato!

Registrar o maior valor de uma célula variável

Enviado: 31 Mar 2020 às 20:20
por WagnerF
Ficou bacana demais!!!
Posso pedir mais um grande favor?
Que toda a coluna "F" inicie com 0,0000000
Ou passe para 0,00000000 ao sair.
Grato!!!
Pretendo estudar muito o VBA, programei há muito, muito tempo em Clipper e me le lembrei do Do While .not. eof() e Enddo; If, else e endif...

Registrar o maior valor de uma célula variável

Enviado: 31 Mar 2020 às 20:55
por WagnerF
Boa noite!

Testando aqui, observei que quando as linhas mudam de posição (uma espécie de ranking das 207 linhas em ordem decrescente
usando as funções Maior, Índice e Corresp) a coluna (F) não está acompanhando a linha.
Pode me ajudar em mais essa?
Grato!

Registrar o maior valor de uma célula variável

Enviado: 31 Mar 2020 às 20:57
por WagnerF
Outra observação que talvez seja importante:
- Estou usando as linhas de 10 a 207 então, alterei F10:F207, algum problema?
Grato!

Re: Registrar o maior valor de uma célula variável

Enviado: 31 Mar 2020 às 21:45
por osvaldomp
WagnerF escreveu: Que toda a coluna "F" inicie com 0,0000000
Ou passe para 0,00000000 ao sair.
No mesmo código não me parece viável. Instale o código abaixo em um módulo comum (menu Inserir/Módulo) e rode quando quiser.
Código: Selecionar todos
Sub LimpaIntervalo()
 [F10:F207] = 0 'ou [F10:F207]=""
End Sub
WagnerF escreveu:... as linhas mudam de posição (uma espécie de ranking das 207 linhas em ordem decrescente
usando as funções Maior, Índice e Corresp) a coluna (F) não está acompanhando a linha.
Em post anterior acima, antes de elaborar o segundo código, eu pedi detalhes sobre as fórmulas, mas você ignorou.
Sugestão: ao invés de fazer a classificação por fórmulas, grave uma macro enquanto você faz a classificação manual das duas colunas (B e F) e depois chame o código gravado ao final do código que passei antes, o que atualiza os valores em F.
WagnerF escreveu:- Estou usando as linhas de 10 a 207 então, alterei F10:F207, algum problema?
No problem :)

Re: Registrar o maior valor de uma célula variável

Enviado: 31 Mar 2020 às 23:34
por WagnerF
Boa noite!

"Sugestão: ao invés de fazer a classificação por fórmulas, grave uma macro enquanto você faz a classificação manual das duas colunas (B e F) e depois chame o código gravado ao final do código que passei antes, o que atualiza os valores em F."

Analisando o arquivo resolvi da seguinte forma:
- Inseri o código que você me passou na planilha Base (que está na ordem natural de importação, ou seja, sem indexação),
e fiz as adaptações de linhas/colunas;
- Na planilha final (que faz a classificação/indexação automaticamente), usei as funções "Índice" e "Corresp" (que já funcionavam antes com outros dados importados) para completar com os dados gerados pelo seu código.

Quanto a "zerar" a coluna (F), vou pesquisar e fazer isso no fechamento da planilha já que quando abro a planilha
ela já começa atualizando algumas colunas.

Quero lhe agradecer muito pela atenção, presteza e dedicação!
Seu auxílio foi de grande importância para mim!
Muito obrigado!!!
Até mais...