Macro Excel VBA

Anônima
2010-12-20T06:59:30+00:00

como fazer uma macro para somar centenas de valores distribuídos em 3 tabelas na mesma planilha quando os nomes forem iguais. Por exemplo: AB32 e 200 (AB32 é o nome na célula A2 e 200 a quantidade na célula B2); AB32 e 350 (AB32 é o nome na célula E2 e 200 a quantidade na célula F2); AXD - 50 (AXD é o nome na célula L2 e 200 a quantidade na célula M2). Neste exemplo a macro inseriria o resultado AB32 e 550 (célula P2 e Q2). Agradeço a ajuda!

Microsoft 365 e Office | Excel | Para uso doméstico | Windows

Pergunta bloqueada. Essa pergunta foi migrada da Comunidade de Suporte da Microsoft. É possível votar se é útil, mas não é possível adicionar comentários ou respostas ou seguir a pergunta.

0 comentários Sem comentários

4 respostas

Classificar por: Mais útil
  1. Anônima
    2010-12-22T23:08:21+00:00

    Olá M,

    Agradeço o interesse e menciona os dados usados na macro acima. A questão é que essa macro só funciona quando os códigos (cod) são numéricos. Além disso é necessário, antes de executar a macro, inseir todos os codigos na coluna F sem repetir. Os resultados são inseridos na coluna G. O Range("A1").Select é um hábito que tenho de selecionar uma célula no iníco e no final de uma macro. O que preciso é adaptar a macro para que processe códigos alfa-numéricos.

    Forte Abraço e Feliz Natal!

    coluna/linha A B C D E F G
    1 cod valor cod valor cod total
    2 1 100 1 11111 1 11612
    3 2 50 4 5444 2 130
    4 2 80 3 20
    5 1 200 4 18789
    6 3 20
    7 4 12345
    8 1 1
    9 4 1000
    10 1 200

    Esta resposta foi útil?

    0 comentários Sem comentários
  2. Anônima
    2010-12-22T15:22:09+00:00

    Oi xlaz,

    Sempre que posso prefiro uma fórmula, mas vc deve ter suas razões para usar uma macro.

    Tentei entender a macro acima, mas ficou difícil sem conhecer os seus dados. Acho que vc colocou a lista de todos os códigos, sem repetição, na coluna F, é isto?

    Por que vc começa com Range("A1").Select? Não entendi. Tb fiquei com dúvida quanto a linSoma

    Enfim, se vc pudesse colocar no forum (copia e cola) os dois ranges indicando as linhas e colunas, talvez eu possa entender melhor.

    abraços,

    M.

    Esta resposta foi útil?

    0 comentários Sem comentários
  3. Anônima
    2010-12-22T13:17:08+00:00

    Oi M

    Muito obrigado pela fx que funcionou. Entretanto estaria interessado em fazer através da macro. No código abaixo, a macro resolve a questão, mas só aceita códigos numéricos, não funcione com códigos alfanuméricos; Eis o código, quem sabe vc alguém poderia adaptá-lo para funcionar com alfanumérico:

       Dim lin As Integer

       Dim col As Integer

       Dim linSoma As Integer

       Dim Valor As Double

       Dim codigo As Integer

       col = 1 'é a coluna A

       lin = 2 'é a linha a

       linSoma = 2

       Valor = 0

    'selecionar tabela com os totais

    'e a lista de códigos sem repetição

    'no caso é a coluna F(a 6ªcoluna)

       Range("A1").Select

       While Cells(linSoma, 6).Value <> ""

       codigo = Cells(linSoma, 6).Value

    'selecionar a tabela com os códigos

    'repetidos e seus valores respectivos

    'no caso a coluna 1(A)

       While Cells(1, col).Value <> ""

       If Cells(1, col).Value = "cod" Then 'título cod em A1

       While Cells(lin, col).Value <> ""

       If Cells(lin, col).Value = codigo Then

       Valor = Valor + Cells(lin, col + 1).Value

       End If

       lin = lin + 1

       Wend

       End If

       col = col + 1

       lin = 2

       Wend

    'inserir resumo com o total de

    'cada código na coluna 7(F)

       Cells(linSoma, 7).Value = Valor

       Valor = 0

       linSoma = linSoma + 1

       col = 1

       Wend

    Esta resposta foi útil?

    0 comentários Sem comentários
  4. Anônima
    2010-12-22T04:16:52+00:00

    Oi xlax,

    As suas tabelas estão nas colunas:

    A e B

    E e F

    L e M

    é isto?

    Se for assim, e P2 = AB32, experimente isto en Q2

    =SOMARPRODUTO(($A$2:$A$100=P2)*($B$2:$B$100)+($E$2:$E$100=P2)*($F$2:$F$100)+($L$2:$L$100=P2)*($M$2:$M$100))

    Estou supondo que seus dados não ultrapassam a linha 100. Se não for assim, ajuste o valor 100 para uma linha maior.

    Espero que ajude

    M.

    Esta resposta foi útil?

    0 comentários Sem comentários