Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Dúvidas sobre cálculos, funções simples e aninhadas, fórmulas matriciais, etc.
#53336
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!
#53340
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.
#53353
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.
#53360
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
.
#53362
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!!!
#53363
"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!!!
#53365
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 ?
#53369
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.
#53371
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...
#53373
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!
#53375
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 :)
#53379
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...
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord