Logo Hardware.com.br
Ramon Dias
Ramon Dias Novo Membro Registrado
18 Mensagens 0 Curtidas

[Resolvido] Macro Excel - Somar +1 c/ idéia

#1 Por Ramon Dias 13/10/2015 - 21:15
Boa noite meus colegas,

Preciso de ajuda! Definirei aqui alguns pontos.

1) Objetivo: Usar a formatação condicional de conjunto de ícones para sinalizar uma célula onde o seu valor seja >=3 (maior ou igual a 3). Porque? Trabalho em uma seguradora e, uma das funções mais importantes é a recuperação. Desta forma tratamos com diversos seguradores por e-mail e precisamos manter o controle dos contatos sem resposta, utilizando então o numero 3 como base para um contato direto. Resumido: Quando o valor da célula contato atingir 3, formatação condicional.

2) De que forma? Pensei em usar macro em um botão, com alguns critérios.
  • 1º ) A programação deverá entender que para somar +1, a célula ativa deverá ser a célula da coluna determinada, ou seja, somar +1 na célula ativa da coluna d somente.
  • 2º) Impedir que o somar +1 seja em outra célula, se não da coluna determinada (ou permitida). Exibindo uma mensagem de informação com texto personalizado.
  • Ideia Compartilhada: Pensei que se possível a programação entende-se que ao acionar o botão, somar +1 ao valor da célula determinada DAQUELA linha na qual está ativa, invés da célula ativa somente. Assim não teria que navegar até a célula correta para acionar o botão corretamente. Eliminando assim o critério 2 e melhorando o critério 1.

E porque o 'filtro' no cabeçalho? Porque acontece que nesta planilha, especialmente em uma coluna, os valores se repetem. Para entender melhor: a coluna é PROTOCOLO e, nesta coluna alguns numero são idênticos. Então o analista ao utilizar da planilha e se deparar com um caso que necessita filtrar para observar as demais informações para aquele mesmo numero. Acontece que estes números não estão um abaixo do outro, juntos. Eles estão distribuídos entre as linhas. AI ENTRA O 3º critério.
  • 3º) A programação deverá entender o filtro aplicado. Somente a caso de problemas, mas acredito que não seria necessário se o tópico 2 for um sucesso.

Meu desespero: Todas as minhas tentativas deram errado. Não consigo!!
Também quero deixar claro que sou inteiramente capaz de indenizar o responsável pelo código correto. Não, não quero incentivar a competição nem o que pensarem de ruim. Somente quero ressarce-lo com pelo conhecimento e tempo aplicados ao meu fardo.
Obrigado desde já.
Ramon Dias
Ramon Dias Novo Membro Registrado
18 Mensagens 0 Curtidas
#3 Por Ramon Dias
14/10/2015 - 23:15
Basole disse:
@Ramon Dias seja bem vindo a bordo.
Por favor, anexe sua planilha ou um modelo próximo.

@Basole. Segue a matriz da planilha.
https://mega.nz/#!LJAgHZIS!6wkInS2zLgq9_he49-xfz7l2zJp215c3h44NhdSN8KE

E muito obrigado pelo contado e boas vindas.

Gostaria de perguntar se, deixei claro o entendimento?
A coluna com a célula da qual eu quero que receba o valor de somar+1 são as células da coluna D.

Continuou lendo uma apostila avançada de macro para tentar desenvolver, mas até agora não muito sucesso.

Obrigado e boa noite.

Anexos

Ramon Dias
Ramon Dias Novo Membro Registrado
18 Mensagens 0 Curtidas
#5 Por Ramon Dias
15/10/2015 - 20:25
Basole disse:
Descupe mas nao entendi o que vc precisa.
Demonstre manualmente e destaque o resultado desejado

@Basole Boa noite.

Eu não consigo pensar em uma forma manual de te mostrar. Irei tentar resumir dando os caminhos na planilha.
  • Estrutura da macro:

[LIST=1]
Somar +1: Simplesmente a macro atingir uma celula determinada (ou seja, as daquela coluna especifica, sempre) e pegar o seu valor e somar +1.
[/LIST]
  • Entenda: Seria a mesma coisa que eu manualmente seleciona-se a celula daquela coluna (podemos definir esta coluna como d, para exemplo) e somar o valor dela com +1. Isso porque eu quero manter um controle de quantas vezes eu já enviei e-mail e não obtive resposta. Um controle somente.

  • Resumo do que seria na planilha: To trabalhando com aquele e-mail, enviei 1 e-mail pra uma pessoa. Minha celula na coluna D então fica 1. Posteriormente eu enviei outro e-mail para obter uma resposta. Minha celula na coluna D passa a ser 1 + 1 = 2. Outro dia eu mandei outro e-mail pois não tive resposta. Minha celula na coluna D passa a ser 2 +1 = 3.


  • Mas tem como melhorar: Depois de acionar um botão para a macro acontecer, ela poderia entender a linha ativa e a coluna ativa que estou e somar +1 na celula da coluna D corretamente.

Exemplo: Estou na linha 45 na coluna E. Enviei um e-mail, quero marcar mais um envio para esta pessoa, então acionei o botão. A macro então entenderia minha posição na planilha (linha 45, colunaE) iria até a coluna D na mesma linha e somaria +1 naquela celula (a celula então é a D45).

Mas porque entender a linha e a coluna? Porque se o codigo da macro fosse somar +1 na CELULA ATIVA (ou seja, qualquer celula que esteja selecionada na planilha) eu teria que manualmente ir até a celula na coluna D para ai sim acionar o botão e não fazer cagada.

Pois suponha que eu esteja na celula de OBSERVAÇÕES. Esta coluna é de texto. Se eu acionar o botão estando nesta celula, a macro pode dar erro ou pode somar alterar meu texto para 1, pois texto +1 = 1.

Se mesmo assim eu não me deixei claro, me avisa. Vou tentar ao maximo esclarecer melhor. Mas peço que leia com atenção.

Obrigado mais uma vez pela resposta.
Marcelo G Prudencio
Marcelo G Pr... Geek Registrado
1K Mensagens 227 Curtidas
#6 Por Marcelo G Pr...
15/10/2015 - 23:33
Cara começe preenchendo a planilha de exemplo assim o pessoal consegue entender o que vc precisa coloque comentários na planilha

Exemplo na Coluna A deve acontecer isso na B aquilo na C isso + aquilo e assim por diante.

Eu pessoalmente peguei uma planilha em branco e não consegui entender.


Uma macro pra de um contador e algo relativamente simples de se fazer mas não entendi além disso

Veja a macro

Sub Contador()

activecell.value = activecell.value

activecell.value = activecell.value +1

End Sub

Isso é suficiente para um contador basta colar em um modulo e associar a um botao mas para atender sua necessidade, e sei que não se limita a isso, e necessário mais informações.
Marcelo Prudencio
Microsoft Excel Brasil no Facebook

"Começar já é a metade do caminho." - Autor Desconhecido
Simplifica que simples fica. - Nicole Tomazella.
"O Simples é Sempre Melhor Que o Complicado" - Jorge Paulo Lemann.
Ramon Dias
Ramon Dias Novo Membro Registrado
18 Mensagens 0 Curtidas
#7 Por Ramon Dias
18/10/2015 - 17:06
Marcelo G Prudencio disse:
Cara começe preenchendo a planilha de exemplo assim o pessoal consegue entender o que vc precisa coloque comentários na planilha

Exemplo na Coluna A deve acontecer isso na B aquilo na C isso + aquilo e assim por diante.

Eu pessoalmente peguei uma planilha em branco e não consegui entender.


Uma macro pra de um contador e algo relativamente simples de se fazer mas não entendi além disso

Veja a macro

Sub Contador()

activecell.value = activecell.value

activecell.value = activecell.value +1

End Sub

Isso é suficiente para um contador basta colar em um modulo e associar a um botao mas para atender sua necessidade, e sei que não se limita a isso, e necessário mais informações.


@Marcelo G Prudencio Boa tarde.

É exatamente por esse caminho. O que acontece com essa macro é justamente o que eu quero quando me referi ao SOMAR +1. PORÉM, o que eu quero A mais nesse codigo é que ele entenda que se a minha celula ativa NAO FOR DA COLUNA D, então a macro não somará +1.

Suponha que eu esteja na linha 12 na coluna E (observações) e acabei de digitar la que eu enviei mais um e-mail. A minha celula ativa que a macro entenderá é a E12. O que eu quero é que ela me leve até a D12 e some mais 1 lá.

Se tiver alguma forma da macro compreender minha linha ativa e minha coluna ativa então ela percorreria para a coluna D na linha que estou.

Obrigado. To pensando em uma forma dar um passo a passo do que eu quero no exemplo manual.
Marcelo G Prudencio
Marcelo G Pr... Geek Registrado
1K Mensagens 227 Curtidas
#8 Por Marcelo G Pr...
18/10/2015 - 20:44
Se é so pra contar qdo a coluna D for a coluna Ativa

Tenta esse

Sub Contador()


If ActiveCell.Column = 4 Then

ActiveCell.Value = ActiveCell.Value

ActiveCell.Value = ActiveCell.Value + 1

End If


End Sub


Novamente associe a um botão e pronto.

Se quiser que ele funcione apos digitar e preciso fazer uma pequena mudança mas nada de muito complexo.
Marcelo Prudencio
Microsoft Excel Brasil no Facebook

"Começar já é a metade do caminho." - Autor Desconhecido
Simplifica que simples fica. - Nicole Tomazella.
"O Simples é Sempre Melhor Que o Complicado" - Jorge Paulo Lemann.
Basole
Basole Geek Registrado
945 Mensagens 596 Curtidas
#9 Por Basole
18/10/2015 - 23:45
Suponha que eu esteja na linha 12 na coluna E (observações) e acabei de digitar la que eu enviei mais um e-mail. A minha celula ativa que a macro entenderá é a E12. O que eu quero é que ela me leve até a D12 e some mais 1 lá.


@Ramon Dias voce citou como exemplo a [ coluna E ]. Na coluna E da sua planilha contem formulas e essas formulas são atualizadas conforme a [ coluna A ], que deve ser inserido data.
Pelo que entendi, ao atualizar (a data ) da [ coluna A] a celula da respectiva linha da [coluna D] seja acrescido do valor existente + 1.
Segue o anexo.

Anexos

Click em Curtir se a resposta foi útil. boa.gif Dê retorno por favor. Se resolveu, atencao_regras.gif Altere o Titulo como [ Resolvido ] comemorando.gif
Ramon Dias
Ramon Dias Novo Membro Registrado
18 Mensagens 0 Curtidas
#10 Por Ramon Dias
18/10/2015 - 23:54
@Marcelo G Prudencio, então meu amigo. Pensa comigo que estamos chegando la. Nao tem como eu criar um exemplo manual pois n tem como! Seria pior.

Estou na coluna E(observação). Acabei de preenche-la com algum texto. Até o momento de acionar o botão a minha ACTIVE.CELL é a celula E, ou seja, quando eu acionar a macro vai somar +1 nela. Não quero isso.

O que eu quero? Quero que a macro pegue o eu endereço atual na planilha, ou seja, estou na coluna E, minha ACTIVE.CELL é a E. Ao acionar o botão a macro entende que eu estou na coluna E, me leva até a coluna D e soma mais 1 la.

Exemplos banais:

Estou na E15, minha celula ativa E15. Acionei a macro e ela entendeu que estou na E15, então me levará até a D15 e somará +1 lá.

Estou na E148, minha celula ativa E148. Acionei a macro e ela entendeu que estou na E148, então me levará até a a D48 e somará +1 lá.

Estou na E4, minha celula ativa E4. Acionei a macro e ela entendeu que estou na E4, então me levará até a D4 e somará +1 lá.

Entendeu? Ela reconhece minha coluna ativa (E) e numero da linha (4), depois ela vai me levar até a coluna D daquela mesma linha e somará +1 lá.


Porque? Porque se fosse pra fazer manualmente, eu teria que navegar até a coluna d para acionar o botao. Não faria sentido eu ter macro pra isso.

Obrigado e boa noite.

Basole disse:
@Ramon Dias voce citou como exemplo a [ coluna E ]. Na coluna E da sua planilha contem formulas e essas formulas são atualizadas conforme a [ coluna A ], que deve ser inserido data.
Pelo que entendi, ao atualizar (a data ) da [ coluna A] a celula da respectiva linha da [coluna D] seja acrescido do valor existente + 1.
Segue o anexo.


@Basole, Caramba amigo. Ficou o maximo sua ideia. É bem por ai, pois nem precisaria de botao. Mas percebi que qualquer atualização na coluna faria a macro somar +1 na coluna D, o que nao seria muito bom pois tenho que levar em conta o erro humano.

Eu posso inserir a data errada. Ao apagar a celula ele também soma. Ou seja, o comando de somar +1 tem que ficar em meu controle pois eu tenho a conciencia de quando e porque eu precisaria acionar a macro para somar +1.

Entende? Muito obrigado mesmo assim. Vou estudar seu codigo porque com certeza pode me ajudar em outras ideias.

Boa noite amigos.
Marcelo G Prudencio
Marcelo G Pr... Geek Registrado
1K Mensagens 227 Curtidas
#11 Por Marcelo G Pr...
19/10/2015 - 10:56
Amigo um exemplo manual é feito assim

Preencha sua planilha com dados de exemplo qualquer dado, nao precisa ser real desde que o dado seja coerente

Veja porquê?

Vc disse inicialmente que se a celula ativa for da coluna D vc desejaria que venha ser somado +1

Depois essa alteração passou a ser na coluna E ( nao escrevi essa rotina), e agora por ultimo conforme o exemplo do amigo Basole a alteração acontece na coluna A pois a coluna E é alterada por formulas.

Preencha sua planilha com dados e coloque as observações necessarias.

Assim:

Qdo eu digitar na Celula Xy (Xy é qualquer celula) deve somar 1 na celula Az (Az tb é qualquer celula )

Assim fica simples de ajudar.


De qualquer maneira fiz uma guambiarra aqui onde qdo vc alterar a coluna A, conforme disse o Basole vai disparar uma macro onde vai selecionar a coluna D e vc pode executar a macro que postei acima. Coloque esse codigo na folha da planilha


Private Sub Worksheet_Change(ByVal Target As Range)

Application.ScreenUpdating = False

If ActiveCell.Column = 1 Then

ActiveCell.Offset(-1, 3).Select

MsgBox "Não esqueça de ativar a contagem", vbExclamation, "Atenção"

End If

Application.ScreenUpdating = False

End Sub


E esse codigo em um modulo:

Esse é o mesmo que postei acima.

Sub Contador()

If ActiveCell.Column = 4 Then

ActiveCell.Value = ActiveCell.Value

ActiveCell.Value = ActiveCell.Value + 1

End If

End Sub

E so colocar um botao na planilha e pronto.
Marcelo Prudencio
Microsoft Excel Brasil no Facebook

"Começar já é a metade do caminho." - Autor Desconhecido
Simplifica que simples fica. - Nicole Tomazella.
"O Simples é Sempre Melhor Que o Complicado" - Jorge Paulo Lemann.
Marcelo G Prudencio
Marcelo G Pr... Geek Registrado
1K Mensagens 227 Curtidas
#13 Por Marcelo G Pr...
19/10/2015 - 23:35
Se eu entendi isso resolve seu problema

Cole esse codigo na folha da planilha.

Com a planilha ativa clique sobre o nome da planilha com o botao direito selecione exibir codigo na tela que abrir cole o codigo.

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Column <> 36 Then

GoTo IContagem

Else

If Range("AJ" & Target.Row).Value <> "" Then
Range("A" & Target.Row).Value = Date
Range("D" & Target.Row).Value = Range("D" & Target.Row).Value
Range("D" & Target.Row).Value = Range("D" & Target.Row).Value + 1


Exit Sub

End If
End If

IContagem:
If Target.Column <> 37 Then Exit Sub

If Range("AK" & Target.Row).Value <> "" Then
Range("A" & Target.Row).Value = Date
Range("D" & Target.Row).Value = 1
End If

End Sub

O codigo so altera a coluna A e a D se vc alterar as celulas AJ ou AK

Se vc alterar AJ ele soma 1 na coluna D se alterar Ak inicia a contagem novamente.

Caso nao seja isso explique novamente.
Marcelo Prudencio
Microsoft Excel Brasil no Facebook

"Começar já é a metade do caminho." - Autor Desconhecido
Simplifica que simples fica. - Nicole Tomazella.
"O Simples é Sempre Melhor Que o Complicado" - Jorge Paulo Lemann.
Ramon Dias
Ramon Dias Novo Membro Registrado
18 Mensagens 0 Curtidas
#14 Por Ramon Dias
20/10/2015 - 15:17
Marcelo G Prudencio disse:
Se eu entendi isso resolve seu problema

Cole esse codigo na folha da planilha.

Com a planilha ativa clique sobre o nome da planilha com o botao direito selecione exibir codigo na tela que abrir cole o codigo.

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Column <> 36 Then

GoTo IContagem

Else

If Range("AJ" & Target.Row).Value <> "" Then
Range("A" & Target.Row).Value = Date
Range("D" & Target.Row).Value = Range("D" & Target.Row).Value
Range("D" & Target.Row).Value = Range("D" & Target.Row).Value + 1


Exit Sub

End If
End If

IContagem:
If Target.Column <> 37 Then Exit Sub

If Range("AK" & Target.Row).Value <> "" Then
Range("A" & Target.Row).Value = Date
Range("D" & Target.Row).Value = 1
End If

End Sub

O codigo so altera a coluna A e a D se vc alterar as celulas AJ ou AK

Se vc alterar AJ ele soma 1 na coluna D se alterar Ak inicia a contagem novamente.

Caso nao seja isso explique novamente.


@Marcelo G Prudencio Boa tarde amigo.

Então, quase 100%. Muito boa a ideia de puxar a data na coluna a se houver uma alteração na coluna aj. Porém, para que eu confie 100% no número que aparecerá na coluna D, o somar mais 1 só irá ocorrer se na coluna Aj houver uma alterações e na coluna A também. Ou seja, para somar mais 1, dias alterações terá que ocorrer, uma na aj e outra na a.

Pois nem toda alteração que eu faço na coluna Aj é de fato um novo contato.

Então, uma alteração ocorreu na Aj. Nada acontece.
Se essa alteração ocorreu na Aj e na A.
Somar mais 1 na D.

Se uma alteração ocorreu na Aj, na A e AK então recalcular (apagando o valor contido e somando 1).

As colunas são:
A=1
Aj=36
Ak=37

Obrigado pelo código. Qualquer dúvida indica que eu refaço o vídeo.

Abraços!!
Marcelo G Prudencio
Marcelo G Pr... Geek Registrado
1K Mensagens 227 Curtidas
#15 Por Marcelo G Pr...
20/10/2015 - 18:01
A ideia que tive aqui é que o codigo funcione somente qdo vc alterar a coluna A isso ajuda

Ou seja qdo vc alterar a coluna AJ nao vai acontecer nada, neste caso vc precisa alterar a coluna A
E em caso de alterar a coluna AK ele altera as duas.

Sera que isso funciona pra vc
Marcelo Prudencio
Microsoft Excel Brasil no Facebook

"Começar já é a metade do caminho." - Autor Desconhecido
Simplifica que simples fica. - Nicole Tomazella.
"O Simples é Sempre Melhor Que o Complicado" - Jorge Paulo Lemann.
© 1999-2024 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal