Jump to content

Recommended Posts

Posted

Boas.

Sou novo por estas bandas e ontem encontrei o vosso site, e já csgui resolver um dos problemas com que me estava a deparar, no entanto andei a procura e não vi nada que me ajuda-se a resolver a situação que passo a explicar.

Tenho uns determinados dados numa tabela que vão sendo incrementados directamente quando adiciono os valores numa outra tabela, isto é, tenho uma especie de tabela final onde me dá a soma de todos os valores que adiciono na tabela principal.

Mas gostaria de adicionar um contador relacionado a esta tabela final, mas com uma característica especifica.

Imaginem que a tabela final me dá 3 resultados, necessito de 3 contadores (1 para cada 1 desses resultados), mas que aumentam a partir de 0 até 50 de cada x que a tabela correspondente não sofre qualquer alteração de valor, e que assim que a tabela que correspondente a esse contador sofrer alteração de valor, o contador dessa tabela volta a iniciar do 0 (no entanto os outros dois contadores continuam a aumentar).

EX: Valor final 1 (0)            Contador 1 (0)

      Valor final 2 (0)            Contador 2 (0)

      Valor final 3 (0)            Contador 3 (0)

      Valor final 1 (1)            Contador 1 (0) faz reset

      Valor final 2 (0)            Contador 2 (1) aumenta

      Valor final 3 (0)            Contador 3 (1) aumenta

      Valor final 1 (2)            Contador 1 (0) faz reset novamente

      Valor final 2 (0)            Contador 2 (2) aumenta

      Valor final 3 (0)            Contador 3 (2) aumneta

      Valor final 1 (2)            Contador 1 (1) aumenta

      Valor final 2 (0)            Contador 2 (3) aumenta

      Valor final 3 (1)            Contador 3 (0) faz reset

      Valor final 1 (2)            Contador 1 (2) aumenta

      Valor final 2 (1)            Contador 2 (0) faz reset

      Valor final 3 (1)            Contador 3 (0) aumenta

Não tenho a certeza se isto é possível, mas julgo que sim, porque pelo que já vi por ai, vocês fazem de tudo 😛 Espero que tambem me possam ajudar nesta questão, se não tiver sido explicito posso tentar melhorar a minha explicação.

Obrigado

Posted

Pois não sei ao certo qual o melhor programa para executar este tipo de tarefas, mas as minhas tabelas onde preciso de obter os tais valores dos contadores estão em excel. E nunca trabalhei com access por isso ainda tenho menos conhecimento de como executar este tipo de tarefas.

Posted

Já me estive a informar e sei que é possivel criar uma macro em VBA para executar esse tal contador... o objectivo como tinha explicado será que através de uma tabela final que se encontra na folha2 ( que recebe os dados através da soma de varias celulas da folha 1), sempre que houvesse alguma alteração nesses valores (da tabela final na folha2) o contador respectivo voltava a 0, enquanto que os restantes contadores correspondentes as outras celulas da tabela final aumentassem 1 valor.

Já estive a tentar criar essa macro, mas tenho muito pouco conhecimento em VBA para fazer este tipo de codigo.

Mas percebi que era importante a informação de que a tabela final se encontra na "coluna 2" de 1 a 49 (folha2) e o contador seria para ficar na mm folha, mas na coluna 4(por ex) e nas mesmas linha, de 1 a 49. Em que o valor final da linha 1 corresponde ao contador da mm linha, e por ai fora ate a linha 49.

Se alguém me conseguir ajudar a criar este tipo de código agradecia.

Obrigado

Posted

Faz uma cópia do valor (não é uma fórmula) da coluna 2 para a coluna 3

Mete a contagem inicial na coluna 4.

Sempre que quiseres corre o procedimento abaixo:

Sub updatecount()
    For n = 1 To 49
        If Range("Folha2!B" & n).Value <> Range("Folha2!C" & n).Value Then
            Range("Folha2!C" & n).Value = Range("Folha2!B" & n).Value
            Range("Folha2!D" & n).Value = Range("Folha2!D" & n).Value + 1
        End If
    Next n
End Sub

Na primeira linha assinalada, a macro verifica se os valores originais e da cópia são diferentes;

na segunda linha, copia o valor original para a coluna da cópia; e

na terceira linha actualiza o contador

What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Posted

Obrigado pelo código 🙂 , mas não era bem isso que pretendia, pois além de ser pouco prático, o contador não voltava a 0 smp que eu adicionava um qualquer valor às células correspondestes.

Entretanto julgo que já csgui fazer aquilo que pretendia com a ajuda de um amigo.

Obrigado de qq maneira 😄

Cumps,

Simões

Posted

... o contador não voltava a 0 smp que eu adicionava um qualquer valor às células correspondestes.

Ah! É ao contrário ...

Sub updatecount()
    For n = 1 To 49
        If Range("Folha2!B" & n).Value <> Range("Folha2!C" & n).Value Then
            Range("Folha2!C" & n).Value = Range("Folha2!B" & n).Value
            Range("Folha2!D" & n).Value = 0
        Else
            Range("Folha2!D" & n).Value = Range("Folha2!D" & n).Value + 1
        End If
    Next n
End Sub

What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Posted

Exacto é isso mesmo. Já está a funcionar! 🙂

Já agora mais uma questão... Usando esse código, pois a finalidade é idêntica, mas em vez de ter 1 contador para cada linha, precisava de 2 contadores, um para as linhas pares, outro para as linhas impares. A base de dados é a mesma de 1-49.

Basicamente a minha duvida é, como dar a indicação de quais a linhas que pretendo usar em qualquer contador que necessite de fazer? E quando são intervalos, tipo de 1-6?

Obrigado

Posted

Isso agora deixo-te, ou ao teu amigo, alterar o codigo (até porque nao percebi muito bem).

Podes usar o módulo para calcular o resto da divisão entre dois números, e assim saber, por exemplo, se é par (resto 0 quando dividido por 2) ou impar (resto 1); ou para o intervalo 1-7 faz com o divisor 7

if n mod 7 = 0 then 'domingo
if n mod 7 = 1 then 'segunda
...

What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Posted

Sim fui um pouco confuso na explicação, vou tentar melhorar 🙂

O que estava a tentar dizer é, em vez de ter a tabela final da linha 1 até à 49 com os respectivos 49 "contadores" (que usado o código que meteste estão na coluna 4), queria meter mais 2 contadores que fossem aumentando 1 valor(a mm coisa que o código anterior) sempre que eu altero qualquer valor na tabela no intervalo de 1-25 (isto apareceria no contador 1) e outro contador para o intervalo de 25-49 .

Basicamente a minha duvida é, como defino o intervalo em código? e outra é se quiser fazer o tal contador para todos valores da tabela que estão em linhas pares se preciso meter uma condição para cada linha tipo:

q = linha2

w = linha4

e = linha6

...

r = linha 48

Posted

Atenção: de acordo com o que disseste o valor da linha 25 reflecte-se em dois contadores.

se (valor da linha 1 tiver sido mudado) ou (valor da linha 2 tiver sido mudado) ou (...) ou (valor da linha 25 tiver sido mudado)
    alterar contador 1
endif

se (valor da linha 25 tiver sido mudado) ou (valor da linha 26 tiver sido mudado) ou (...) ou (valor da linha 49 tiver sido mudado)
    alterar contador 2
endif

What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.