• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

jmaocubo

Soma por condições em vba (tipo filtro)

8 mensagens neste tópico

Olá a todos

Mais uma vez venho pedir-vos ajuda para completar mais um projecto já na recta final…

Neste momento tenho uma folha cuja coluna A corresponde ao código da natureza do trabalho e a coluna B refere-se ao valor unitário desse mesmo trabalho.

O que pretendia fazer era com um código em VBA que analisasse a coluna A e de acordo com o código somasse todos os valores da mesma natureza, ou seja:

Os códigos são compostos por números e letras (o tamanho da cadeia é variável), mas são definidos pelo 1.º numero:

10P000 Natureza do tipo 1 (o que a define é o número 1)

11H004 Natureza do tipo 1

20000000 Natureza do tipo 2 (o que a define é o n.º 2)

29910574 Natureza do tipo 2

300F7811 Natureza do tipo 3 (o que a define é o n.º 3)

50000000 Natureza do Tipo 4 (o que a define é o n.º 5)

51099000 Natureza do Tipo 4

70000001 Natureza do Tipo 5 (o que a define é o n.º 7)

71458974 Natureza do tipo 5

O que precisava era de um código VBA que somasse todos da mesma natureza e colocasse o total dessa natureza na folha2 célula C5, C6, C7, C8, C9

Ex:

FOLHA1

                  A                    B              C

1|      51500999                2€

2|      20078511                  5€

3|    20788755                  1€

4|    1R00544                    1.5€

FOLHA2

Logo a soma da natureza 4 era 2€ e este valor passa para a folha2 célula C8

Logo a soma da natureza 2 era 6€ e este valor passa para a folha2 célula C6

…. Idem para os outros

Desde já agradeço

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

desculpe....  eu não consegui entender muito bem...  como é definida as naturezas??  essa numeração tem obrigatoriamente o mesmo número de caracteres????  por exemplo... 1000 a 1999, 2000 a 2999??  seria isso???  Caos seja algo do tipo estou tendno ver um projeto que tinha realizado com um código que usei fazendo exatmente o que está querendo, mas ele tem caracter fixo e um padrão de contagem.

Poderia esclarecer??

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

desculpe....  eu não consegui entender muito bem...  como é definida as naturezas??  essa numeração tem obrigatoriamente o mesmo número de caracteres????  por exemplo... 1000 a 1999, 2000 a 2999??  seria isso???  Caos seja algo do tipo estou tendno ver um projeto que tinha realizado com um código que usei fazendo exatmente o que está querendo, mas ele tem caracter fixo e um padrão de contagem.

Poderia esclarecer??

Olá e agradeço desde já a atenção prestada ao meu problema.

O que se passa é o seguinte:

De um programa externo exporto para excel uma tabela que envio em anexo, e de acordo com o 1º numero do código defino a natureza, que neste caso é a seguinte:

- Todos os códigos começados por 1 representam os trabalhadores da empresa

- Todos os códigos começados por 2 representam os materiais que vão ser usados nas tarefas

- Todos os códigos começados por 3 representam os equipamentos a afectar as tarefas

- Todos os códigos começados por 5 representam trabalhadores independentes que contratamos

- Todos os códigos começados por 7 representam os técnicos especializados que controlam as tarefas

- Todos os códigos começados por 9 representam todos os outros indiferenciados

Os códigos podem é ter letras no meio, mas começam sempre por um número

O que preciso é somar esses custos como diz o bom Português:"alhos com alhos e bugalhos com bugalhos" :biggrin:

Como está representado no ficheiro que envio, na folha2 eram indicados esses somatórios.

Saliento que a dimensão da tabela é variavel podendo ter apenas 5 códigos com 1000 códigos ou mais, no entanto o padrão de códigos é o represendado conforme indico em cima.

espero ter-me explicado bem e abaixo envio o link do exemplo.

http://www.yourfilehost.com/media.php?cat=other&file=Exemplo.xlsx

Agradeço mais uma vez  :)

Miguel

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Olá boa tarde

Avanço com uma solução sem VBA, mas utilizando algumas potencialidades do Excel.

Inserir uma coluna auxiliar na Folha1 (no caso foi a coluna A) com a fórmula

=ESQUERDA(B3;1) na células A3 e copiar até à linha que quiser

Na Folha 2 escrever a fórmula

=SOMA.SE(Folha1!A:A;DIREITA(Folha2!A3;1);Folha1!H:H) em D3

e copiar para os casos 2 a 9.

Resolve ... e bom trabalho

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

De notar que na Folha 2 retirei os : de "Somatório Tipo 1:"

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Olá boa tarde

Avanço com uma solução sem VBA, mas utilizando algumas potencialidades do Excel.

Inserir uma coluna auxiliar na Folha1 (no caso foi a coluna A) com a fórmula

=ESQUERDA(B3;1) na células A3 e copiar até à linha que quiser

Na Folha 2 escrever a fórmula

=SOMA.SE(Folha1!A:A;DIREITA(Folha2!A3;1);Folha1!H:H) em D3

e copiar para os casos 2 a 9.

Resolve ... e bom trabalho

Olá jpmoreira50

estou a utilizar o que sugeriste (foi a 1ª solução que utilizei)... o problema é que o tamanho da tabela é inconstante podendo mesmo ter centenas de códigos ou apenas dezenas de códigos.

O ficheiro que estou a criar faz parte de um projecto que já estou a desenvolver há alguns meses (com a vossa excelente ajuda). Acontece que este projecto pela sua complexidade de informação vai aumentando (e muito bem) o tamanho do ficheiro, acontece que não pode aumentar muito. Isto tudo para quê? Se eu copiar a formula que sugeres até ao limite máximo da folha, isso vai pesar em questão de MegaBytes, é por isso que eu preciso de um código em VBA que verifique o range da tabela.

Desde já agradeço a tua disponibilidade para me ajudar... ;)

Abraço

Miguel

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora