Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Joseph2018

Excel Código VBA - Cálculo Consumo

Recommended Posts

Amigo(a), obrigado pela resposta. Quase atende, embora preferisse um código VBA, porém talvez tenha como adaptar. Ocorre que os critérios para obtenção dos dados não foram totalmente atendidos. É necessário que, com base nas datas informadas, as totalizações por código devem considerar somente se  (campo Tipo for= S ou D e  o campo DEP seja diferente de NBA).

Vejas os valores esperados no arquivo .doc encaminhado.

 

Tentei ajustar para atender a esses critérios mas não consegui. Você poderia tentar ajustar e me reencaminhar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo(a). Agora ficou show. Não vou precisar da Tabela Dinâmica neste momento. Vou deixar a planilha que calcula o consumo fixa, variando apenas as datas que serão informadas e, a partir daí, vou executar outros procedimentos, via macro que são bem mais tranquilos. Muitíssimo obrigado, mais uma vez. Essa equipe do Clube do Hardware é 10. Parabéns.

adicionado 58 minutos depois

Amigo(a), desculpe. Esqueci um fator importante: A planilha Mov_ME começa em $A$2 e vai crescendo diariamente e como não tenho como determinar até que tamanho irá, nas fórmulas da planilha Cons_mensal como poderia ajustar de modo que fosse de $A$2 até a última célula preenchida da coluna A, de $B2$ até a última célula da coluna B e assim por diante paras as demais colunas  envolvidas.

 

Desde já agradeço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso você pode ajustar conforme sua necessidade, sugiro você colocar B2:B1000 ou um numero maior que você considere confortavel, importante lembrar que todos os intervalos devem ser iguais.

 

E de tempo em tempo ajustar o numero de linhas durante o uso.


Não precisa necessariamente usar a ultima linha preenchida.




 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo(a), desculpe. Esqueci um fator importante: A planilha Mov_ME começa em $A$2 e vai crescendo diariamente e como não tenho como determinar até que tamanho irá, nas fórmulas da planilha Cons_mensal como poderia ajustar de modo que fosse de $A$2 até a última célula preenchida da coluna A, de $B2$ até a última célula da coluna B e assim por diante paras as demais colunas  envolvidas.

 

Desde já agradeço.

 

Amigo, posso ajustar, porém  como faz parte de um "sistema" queria evitar manutenções em períodos curtos. A movimentação anual da planilha Mov_ME deve ser da ordem de 10.000 linhas. Pergunto: se colocar 30.000 isto pode afetar o desempenho?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo, tentei substituir nas fórmulas da planilha Cons_mensal as referências de linhas =95 por outros valores maiores, inclusive 30000 e deu erro, apareceu #VALOR. Exemplo onde estava $A$2:$A$95 mudei para $A$2:$A$1000. O curioso é que quando substituí por 100 funcionou, mas nenhum outro valor maior. Preciso que seja 30000 em todas as referências. Como disse a planilha Mov_ME vai crescendo a cada dia. Você pode ajustar na planilha de exemplo e me enviar? 

 

Antecipadamente agradeço.

adicionado 24 minutos depois

Amigo, desculpe mais uma vez. Descobri a razão porque estava dando erro. Havia uma sujeira em uma célula distante. Por isso funcionou quando ajustei para 100 e para valores maiores dava erro. Já consegui ajustar todas as referências para 30000 e tudo funcionou perfeitamente. Obrigado por tudo e até a próxima.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo, desculpe mais uma vez. Descobri a razão porque estava dando erro. Havia uma sujeira em uma célula distante. Por isso funcionou quando ajustei para 100 e para valores maiores dava erro. Já consegui ajustar todas as referências para 30000 e tudo funcionou perfeitamente. Obrigado por tudo e até a próxima.

 

Amigo, ocorreu um imprevisto. Pensei que estava tudo ok, mas há um problema: a planilha _MOV_ME é alimentada, via código VBA copiando determinados intervalos de outras planilhas  e colando somente valores nela. Por segurança copio, por exemplo um intervalo que compreende 100 linhas, porém as 40 últimas não tem informação, mas quando são coladas na MOV_ME parece que fica algum registro, pois imediatamente a planilha Cons_Mensal apresenta erro nas fórmulas (#VALOR). Aí eu vou na planilha MOV_ME seleciono todas as células vazias a partir da última linha preenchida, DELETO e automaticamente tudo fica OK na planilha Cons_Mensal. Se eu excluir  todas as linhas vazias a partir da última preenchida aí o problema é maior, pois as fórmulas da Cons_Mensal são ajustadas para o total de linhas da MOV_ME, o que NÃO pode acontecer.

 

Pergunto: o que posso fazer para resolver este problema?

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo, segue o arquivo Parte_Codigo_Copia_Informacoes.docx, com a  parte referente ao processo de cópia das informações para a planilha MOV_ME. Par facilitar o entendimento, anexo também o arquivo Calcula_Consumo_Resposta_Final.xlsx com algumas planilhas envolvidas. 

 

No aguardo, antecipadamente agradeço.

Calcula_Consumo_Final.xlsx

Parte_Codigo_Copia_Informacoes.docx

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara nao complica o post esta ai pra isso, o trabalho que você teve pra escrever o docx seria o mesmo que escrever no post. 

Vamos usar os recursos do forum. É de graça!

 

É so colar o codigo que você usa para copiar.

Se quiser postar a planilha poste a planilha com o codigo nela mesmo.

 

É so compactar o arquivo *.zip ou *.rar

Editado por CasaDoHardware

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo, devo refazer o post conforme suas orientações acima ou pode ficar para os próximos, pois não vi a resposta a minha consulta?

 

No aguardo.

 Agradeço.

 

PS.: só para esclarecer, às vezes preciso incluir tabelas com valores e não vi este recurso dentro do post.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara a planilha tem que ter dados para que se possa testar, você mandou uma planilha sem nenhuma informação para testes, sendo assim experimente este codigo.

 

Eu nao testei.

 

Se nao funcionar poste uma planilha com o codigo e dados. É so compactar o arquivo que o forum aceita.

 

Sub teste()

Dim W As Worksheet
Dim ULinha As Long
Dim Sh As Worksheet


Set W = Sheets("Preencher_RIM")
Set Sh = Sheets("Mov_ME")
    
    
    '  Lança informações da RIM na planilha MOV_ME
    
    ULinha = W.Range("A" & Rows.Count).End(xlUp).Row
    W.Range("A2:A" & ULinha).Copy
    ULinha = Sh.Range("A" & Rows.Count).End(xlUp).Offset(1, 0).Row
    Sh.Cells(ULinha, 1).PasteSpecial Paste:=xlPasteValues
    
    ULinha = W.Range("A" & Rows.Count).End(xlUp).Row
    W.Range("C2:C" & ULinha).Copy
    ULinha = Sh.Range("B" & Rows.Count).End(xlUp).Offset(1, 0).Row
    Sh.Cells(ULinha, 2).PasteSpecial Paste:=xlPasteValues
    
    ULinha = W.Range("A" & Rows.Count).End(xlUp).Row
    W.Range("P2:P" & ULinha).Copy
    ULinha = Sh.Range("C" & Rows.Count).End(xlUp).Offset(1, 0).Row
    Sh.Cells(ULinha, 3).PasteSpecial Paste:=xlPasteValues
    Sh.Cells(ULinha, 10).PasteSpecial Paste:=xlPasteValues
    
    ULinha = W.Range("A" & Rows.Count).End(xlUp).Row
    W.Range("H10:M" & ULinha).Copy
    ULinha = Sh.Range("D" & Rows.Count).End(xlUp).Offset(1, 0).Row
    Sh.Cells(ULinha, 4).PasteSpecial Paste:=xlPasteValues
    
End Sub

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo, boa tarde. Estive afastado por motivo de férias e só hoje pude voltar a acessar o fórum. Peço desculpas por não ter inserido dados nas planilhas que são utilizadas para inserir dados na planilha MOV_ME. Vou tentar usar o código que você enviou que, com certeza deve ser a melhor solução. Contudo, como o processo de cópia já está funcionando e que quando, após a cópia eu acesso "manualmente" a planilha MOV_ME, vou para a última célula preenchida e depois a partir da próxima eu seleciono um intervalo  da coluna A até a J de umas 200 linhas e apago (deleto), tudo funciona perfeitamente. Assim sendo, como uma solução adicional poderia ter um código que fizesse isso, ou seja: ir para a última célula preenchida da coluna A da planilha MOV_ME e, a partir da próxima selecionasse um intervalo de 200 linhas de A até J e deletasse? Isso seria mais um aprendizado para mim.

 

Por fim, amigo, gostaria de aproveitar para pedir, caso você possa, uma indicação de um Curso de VBA para Excel, preferencialmente presencial (senão, on line) que abordasse de forma prática, passo a passo todos os procedimentos necessários a um aprendizado consistente da linguagem.

 

No Aguardo, antecipadamente agradeço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como eu disse o codigo acima provavelmente atende sua necessidade.

 

Qto a um codigo para apagar da ultima linha ate a 200 você pode tentar este

 

sub apagar()

 

range("A" &rows.count).end(xlup).offset(1,0).select

Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select

selection.delete

 

end sub

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo, bom dia. Adaptei o código que você me mandou no dia 06/03 e funcionou perfeitamente, Muito obrigado.

 

Neste momento solicito o seguinte:

 

  1. Preciso inserir em uma célula, o número da última linha preenchida da coluna "A" da planilha MOV_ME, pois preciso fazer o acompanhamento da quantidade de linhas. Tentei usar a função LIN, mas não consegui. Como devo fazer? (não achei necessário encaminhar a planilha);
  2. Você tem alguma indicação de curso de Excel Avançado, incluindo programação VBA para Excel?  Pode ser presencial ou on-line. Caso negativo, sugere algum livro tipo passo-a-passo para programação VBA?

No aguardo, antecipadamente agradeço.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
Postado (editado)

Numero da linha = a quantidade de registros ?

 

Se sim.

 

=Cont.valores(Intervalo de dados)-  numero de linhas acima do primeiro registro.

 

Qto a estudar VBA você pode procurar no youtube tem muita coisa boa la.

 

 

 

Editado por CasaDoHardware

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não amigo, eu gostaria que fosse identificado o número da linha correspondente à ultima célula preenchida da coluna A. Esta planilha é dinâmica e o número de registros vai aumentando a todo instante. Por isso gostaria de visualizar o número da linha em correspondente à última célula da coluna A, que esteja preenchida.

 

Obrigado pela sugestão do youtube.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo, tem uma solução para minha solicitação acima, ou seja, o que devo inserir em uma cédula qualquer, para que retorne o número da linha correspondente à última célula preenchida da coluna A da planilha MOV_ME?

 

Desde já agradeço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Neste caso 

 

Pode usar este codigo abaixo 

 

Sub apagar()

Dim Linha as long

Linha = range("A" &rows.count).end(xlup).offset(1,0).row    'Identifica a ultima linha com dados

range("A" &rows.count).end(xlup).offset(1,0).select

Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select

selection.delete

Range("A1").value = Linha ' TROQUE A1 PELA CELULA ONDE você DESEJA QUE APAREÇA O NUMERO DA ULTIMA LINHA COM DADOS.

 

end sub

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado amigo. Fiz as adaptações e funcionou legal. Muito obrigado.

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






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

×