Ir ao conteúdo
  • Cadastre-se
xandymarinho

Excel RESOLVIDO Macro Calcular e Classificar

Recommended Posts

Olá galera, eu novamente aqui para mais dúvidas.

 

Meu problema é o seguinte, estou criando uma macro para otimizar um trabalho aqui, pois vou ter muitos cálculos para se repetirem iguais ao do meu exemplo.

Tenho essa planilha em anexo com produtos e seus valores de venda, preciso calcular o % que cada produto representa do total e no final classificar do maior valor para o menor

 

Resumindo, os cálculos e demais formatações consegui fazer na macro. O problema é quando vou aplicar a macro em  outras células (com mesma quantidade de linhas), pois como no cálculo o valor que é dividido é fixo, sendo assim ele leva essa fixação da célula para as outras.  

 

Como fazer pra conseguir usar essa macro em outras células sem fixar a célula ?

image.png.83e122f6476fb776f6583e0ad776ae13.png

 

Sub Macro13()
'
' Macro13 Macro
'

'
    ActiveCell.FormulaR1C1 = "=RC[-3]/R7C7"
    ActiveCell.Select
    Selection.AutoFill Destination:=ActiveCell.Range("A1:A4")
    ActiveCell.Range("A1:A4").Select
    ActiveCell.Offset(4, -4).Range("A1:E1").Select
    Selection.Font.Bold = True
    ActiveCell.Offset(0, 4).Range("A1").Select
    Selection.Style = "Percent"
    ActiveCell.Offset(-4, 0).Range("A1").Select
    Selection.End(xlToLeft).Select
    Range(Selection, Selection.End(xlToRight)).Select
    Range(Selection, Selection.End(xlDown)).Select
    ActiveWorkbook.Worksheets("Planilha1").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Planilha1").Sort.SortFields.Add Key:=ActiveCell. _
        Offset(0, 9).Range("A1:A4"), SortOn:=xlSortOnValues, Order:=xlDescending, _
        DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Planilha1").Sort
        .SetRange ActiveCell.Range("A1:J4")
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    ActiveCell.Offset(4, 9).Range("A1").Select
End Sub

 

Pasta7.xlsx

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola xandymarinho

 

Não entendi o que você precisa.

No Range A3:J6 você tem 4 produtos e quer fazer os cálculos neste range?

Depois o Range A9:J12 terão os mesmos cálculos?

Os demais Ranges (se tiver) serão tb com 4 linhas?

 

Márcio

 

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
13 minutos atrás, Márcio Rodrigues disse:

Ola xandymarinho

 

Não entendi o que você precisa.

No Range A3:J6 você tem 4 produtos e quer fazer os cálculos neste range?

Depois o Range A9:J12 terão os mesmos cálculos?

Os demais Ranges (se tiver) serão tb com 4 linhas?

 

Márcio

 

 

 Isso mesmo @Márcio Rodrigues, o problema é que no ´calculo de produtos diferentes, todos são divididos pelo valor total, ou seja, travo essa célula e quando vou aplicar a macro em outro, ela trás a célula gravado do outro cálculo, tentei fazer sem travar a célula, mas quando classifico sai tudo da ordem

Compartilhar este post


Link para o post
Compartilhar em outros sites
3 minutos atrás, Márcio Rodrigues disse:

Ola xandymarinho

 

Fiz um código que solicita a célula inicial do Range.

Veja se é por aí...

 

Té +

Márcio

Pasta7 v1.rar

Oi Márcio, obrigado pela ajuda, mas abri seu arquivo aqui e qd clico na macro ele pede pra confirmar a célula inicial e qd clico em SIM ele dá erro e manda depurar.

 

O Código que eu tinha feito está assim (ARQUIVO EM ANEXO)

Pasta7.rar

Compartilhar este post


Link para o post
Compartilhar em outros sites
13 minutos atrás, Márcio Rodrigues disse:

Ola xandymarinho

 

Tente indicar a célula A3 e rode.

você tem que indicar a 1ª célula do Range A3 ou A9 no seu exemplo.

 

Márcio

 

 

Ahh entendi, aqui no exemplo funcionou :), vou tentar aplicar aqui na minha tabela, que é maior que o exemplo que te mandei, com mais colunas.

 

Só não aparece a fórmula na barra de fórmulas né ? aparece o valor direto, assim:

image.png.e34806310a35d8590425fceeda733e94.png

 

 

Só uma dúvida, porque tenho que clicar no inicio do Range pra ele calcular, é pra reconhecer onde tá os valores daquela célula ?

 

adicionado 8 minutos depois

Não consegui fazer funcionar na minha tabela, acho que por ter mais colunas, to mandando em anexo o arquivo original só que com menos linhas e a mesma qtd de colunas pra você ver. (arquivo original tem 16 mil linhas)

Analise Mix_AMOSTRA.rar

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola xandymarinho

 

1 - você precisa que apareça a fórmula?

9 minutos atrás, xandymarinho disse:

Só não aparece a fórmula na barra de fórmulas né ? aparece o valor direto, assim

 

2 - Eu não sei onde você vai criar a range, então tenho que indicar o primeiro endereço.

9 minutos atrás, xandymarinho disse:

Só uma dúvida, porque tenho que clicar no inicio do Range pra ele calcular, é pra reconhecer onde tá os valores daquela célula ?

4 horas atrás, xandymarinho disse:

Como fazer pra conseguir usar essa macro em outras células sem fixar a célula ?

 

Qualquer dúvida, manda aí...

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
7 minutos atrás, Márcio Rodrigues disse:

Ola xandymarinho

 

1 - você precisa que apareça a fórmula?

 

2 - Eu não sei onde você vai criar a range, então tenho que indicar o primeiro endereço.

 

Qualquer dúvida, manda aí...

 

A fórmula aparecer não é primordial, mas não consegui fazer funcionar na minha tabela, não entendi muito bem o que é range...rsss

 

Esse modelo que você fez é fixo pra cálculo de 4 linhas ? depois de pronto quero adaptar pra outros tamanhos de cálculos.

 

você viu o arquivo que mandei no post anterior ?

 

Sei que estou enchendo seu saco, mas isso vai quebrar um galhao pra mim :thumbsup:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola xandymarinho

 

Com o seu modelo Analise Mix_AMOSTRA.rar ficou mais fácil de entender, mas mais difícil de fazer (rs).

Range é uma seleção de células, por exemplo de B82 até AG96 é um Range de Bebidas Importadas de 08 anos (está parte é a melhor).

Vou ver se dá pra fazer um código para este modelo.

Dúvidas: você vai rodar a macro em cada Range ou pode rodar tudo de uma vez?

Todos os Ranges (olha ele aqui de novo) vão ter de uma até n linhas ai pula duas linhas e começa o outro Range (cara chato este Range)?

Vai ter que classificar até a coluna AG?

 

That's all folks!

 

Márcio

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
2 minutos atrás, Márcio Rodrigues disse:

Ola xandymarinho

 

Com o seu modelo Analise Mix_AMOSTRA.rar ficou mais fácil de entender, mas mais difícil de fazer (rs).

Range é uma seleção de células, por exemplo de B82 até AG96 é um Range de Bebidas Importadas de 08 anos (está parte é a melhor).

Vou ver se dá pra fazer um código para este modelo.

Dúvidas: você vai rodar a macro em cada Range ou pode rodar tudo de uma vez?

Citação

Todos os Ranges (olha ele aqui de novo) vão ter de uma até n linhas ai pula duas linhas e começa o outro Range (cara chato este Range)?

Vai ter que classificar até a coluna AG?

 

That's all folks!

 

Márcio

 

ahhh agora entendi o que é range,....rssss

 

Então, vou rodar a macro em cada range, porque são muitas e tenho que ir analisando uma a uma, por isso queria algo que facilitasse os outros processos.

 

A Classificação vai até AE

 

Citação

Todos os Ranges (olha ele aqui de novo) vão ter de uma até n linhas ai pula duas linhas e começa o outro Range (cara chato este Range)?

Isso, de 1 a n linhas e pula só uma linha para o começo do outro

Compartilhar este post


Link para o post
Compartilhar em outros sites
59 minutos atrás, Márcio Rodrigues disse:

Ola xandymarinho

 

Alterei o código.

Inclui um teste para saber se esta no começo do range.

Teste e veja se é por ai..

 

Té +

Márcio

Analise Mix_AMOSTRA v1.rar

 

 

Carammmmmmmba cara, você fez mágica, salvou minha vida, tá perfeito !!!! :aplausos:

 

Pra você ter uma ideia, nesse meu arquivo eu teria que fazer manualmente esse cálculo e a classificação 1.735 vezes

 

Muito obrigado mesmo !!!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×