Ir ao conteúdo

Posts recomendados

Postado

Olá, pessoal!

Estou tentando uma solução para uma planilha que precisa ser dividida automaticamente.

Para fazer funcionar minha fórmula, precisaria de uma solução assim:

Célula A1 contém Banco A

Célula A2 conteria a fórmula:

Se A1=Banco A, Então faça com que B1 = x

Ou seja, desejo preencher outras células.

Isso é possível?

Obrigado demais pela atenção, um abraço

Postado

É porque simplifiquei o exemplo, na verdade irei preencher novas tabelas numa segunda planilha e terceira planilha caso a célula original retorne uma condição falsa, sabe.

Tenho uma tabela original com dados de vários bancos, e desejo preencher tabelas automáticamente secundarias pelo período de um ano de cada banco. Achei que a tabela dinâmica, ou PivotTable, iria me satisfazer, mas pelo que vi não seria bem o caso.

Mas não sei como faria uma macro! Eu usava macro para tarefas repetitivas, mas como fazer uma célula preencher, via condição lógica, outras células em outras planilhas?

Postado

Você pode criar uma macro para que quando uma condição for satisfeita gerar valor em células específicas.

Para isso envie um exemplo de sua planilha para facilitar nosso entendimento. Use sendspace.com.

Na planilhe identifique sem fórmulas qual o resultado desejado e onde.

No aguardo.

Postado

http://www.sendspace.com/file/2xxfiz

No exemplo, os dados são inseridos apenas na primeira planilha/tabela.

Na segunda planilha/tabela, desejo preencher de A2 até E2 com a fórmula das condições, e assim criar as planilhas automáticas 2, 3 e 4, sendo a 1 a planilha/tabela de inserção de dados.

O exemplo parece tão simples q talvez haja alguma outra forma de fazer o que quero por outras funções, mas eu só achei algo parecido com as Pivot Tables (acho q são as tabelas dinâmicas).

Obrigado pela atenção, rapaz....um abraço!

Postado

RainBica, desculpe a demora em responder, mas fim de semana é lazer, então...

Montei uma planilha com formulário. Veja no link abaixo se te atende.

Precisando de alteração ou de alguns ajustes, avise-me.

http://www.sendspace.com/file/1hgynx

A macro faz o seguinte: transmite os dados do formulário para a aba Todos e para a aba do Banco específico.

Se não houver aba com nome do banco, existe uma aba oculta padrão para criar novas abas.

Claro, tenha o cuidado de digitar um nome apenas para os bancos: CAIXA, CEF ou BANCO DO BRASIL, BB, etc. Isso fará criar uma aba para cada descrição diferente.

No aguardo.

Abração.

Postado

Puxa Jé, obrigadíssimo pela atenção e ajuda muito especial!

Nunca aprendi a programar uma macro como você fez, apesar de conhecer a estrutura por fazer tarefas repetitivas, mas não precisava escrever o código, como você diligentemente fez, se colocando pra me ajudar com muito valor...... As macros com q eu trabalhava eram criadas pelo próprio Excel ou Word, escrever o código implica muito mais poder.

Mas qto à valiosa ajuda q você me dispõe, eu vi um problema com a entrada de dados. Os dados da planilha Todos já me serão passados diretamente, de modo que o trabalho de digitação não vai haver, entende? Tenho uma maçaroca de "data, lançamento, valor, especificação e banco" que eu devo dividir pelos bancos, sabe, de forma a ter a visão de todos juntos e cada um deles especificado. Eu entendi a necessidade de manter a grafia correta pra cada banco. Agora, não seria o caso de entrar os dados, entende? Acho q isso complica consideravelmente a coisa, não é? A planilha Todos já estaria prontinha e o trabalho, q atualmente é feito a mão, visaria dividir por 3 bancos a sua parte específica, ao invés de colar aqui e ali e lá, colaria apenas na Todos (à medida em q se completem os meses), e aí eu usaria da nossa solução para dividir pelos bancos.

Mas sua ajuda já me faz ver que o que estou procurando, que seria uma fórmula interna do Excel preenchendo todas as celulas vazias das planilhas de cada banco para conferir com a linha correspondente da planilha Todos não existe. Se você não vê como resolver sem usar de Macro é porque não há função para dividir uma planilha em outras planilhas q contem apenas os dados de determinado tipo de coluna, a saber, o banco, parte dos dados de Todos.

A coisa pode ter ficado muito confusa, pela minha explicação, mas não dá pra usar a entrada de dados pela fórmula q você elaborou pra mim com tanta camaradagem e dedicação, porque vou receber os dados e jogar na tabela Todos, e idealmente após isso ter o trabalho apenas de usar as setas de classificação das colunas para ajeitar as linhas por data, sabe.

Mas eu só posso agradecer pelo seu esforço e dedicação de tempo, amigo, estou vendo seu código pra ver se aprendo alguma coisa! Um grande abraço...............

Postado

RainBica, obrigado pelos agradecimentos.

Não sabia que você já teria os dados ao invés de inclui-los um por um.

Mas relaxa, isso é um passatempo pra mim, gosto de fazer isso.

Montei outra macro na tentativa de ajudá-lo.

Essa repassa todos os lançamentos para os devidos bancos.

MAS... as abas de cada banco já devem existir previamente, senão a macro dá erro.

Teste aí e dê retorno.

Planilha:

http://www.sendspace.com/file/au6udh

Macro:

Sub transfere()
'desabilita atualização de tela
Application.ScreenUpdating = False
'define última linha da aba atual
Dim lin As Long
lin = Cells(Rows.Count, 1).End(xlUp).Row

'seleciona a aba do banco e transmite os dados
For i = 2 To lin
With Sheets(Cells(i, 5).Text)
'redefine última linha da aba 'i'
lin = .Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
.Cells(lin, 1) = Format(Cells(i, 1), "mm/dd/yy")
.Cells(lin, 2) = Cells(i, 2)
.Cells(lin, 3) = Cells(i, 3) * "1,00"
.Cells(lin, 4) = Cells(i, 4)
.Range("A1:D" & lin).Borders.LineStyle = xlContinuous
.Columns("A:D").AutoFit
End With
Next

'mensagem de sucesso
MsgBox "Os dados foram transferidos!", vbOKOnly, "Sucesso!"
'habilita atualização de tela
Application.ScreenUpdating = True
End Sub

Abraços.

Postado

Puxa vida, genial Jé, sensacional!

Muito bom mesmo, só precisa de uns pequenos ajustes de formatação q vou ver amanhã, mas copiou tudo perfeitamente.. Vou indicar os seus serviços!..hehe

Estou olhando para o código querendo aprender, vou dar uma estudada, é bem simples e aumenta muito meu poder de fogo, atualmente restrito ao botão direito do mouse..rss

Valeu demais, vou pegar mais dados amanhã e te passo os detalhes finais, mas funcionou q é uma beleza!

Abração...... esse fórum é demais

Postado

RainBica, há um detalhe importante: caso seja utilizada mais de uma vez com novos conteúdos adicionados posteriormente, a macro copiará todas as informações para as planilhas dos bancos, inclusive as que já foram copiadas anteriormente.

Se for o seu caso, há uma maneira fácil de evitar isso. Para tanto, você deve colar o novo conteúdo e deixar selecionada a primeira célula da nova lista.

Exemplo: a lista já transferida está em A2:E13. Você adiciona mais conteúdo e depois deixa a célula A14 selecionada (clique 1x sobre ela) e só então clique no botão da macro.

Para isso, substitua a parte do código:

For i = 2 To lin

Por esta:

For i = ActiveCell.Row To lin

Acho que consegui explicar.

Dê retorno.

Postado

Ei Jé, fiquei meio apertado aqui, mas sempre estarei lidando com os arquivos que você me tem me ajudado muito a automatizar! Depois eu vou te perguntar sobre algumas linhas de código, estou querendo q você além de mandar o peixe me ensine a pescar....hehehe.... brincadeira, mas eu só queria te perguntar agora se tem jeito de copiar os dados junto com os seus formatos, deixando assim todas as planilhas com o mesmo formato, sabe.

Estou de cara satisfeito com esse código que vai me sentir incrivelmente útil! Obrigado, amigo, um abraço ..

Postado

Olá RainBica, a macro possui o comando:

.Range("A1: D" & lin).Borders.LineStyle = xlContinuous

exatamente para formatar as bordas e ficar como na planilha inicial.

Se sua planilha possui outro tipo de formatação:

- alterei a planilha: http://www.sendspace.com/file/92yril

- com o código abaixo:

Sub transfere()
'desabilita atualização de tela
Application.ScreenUpdating = False
'define última linha da aba atual
Dim lin As Long
lin = Cells(Rows.Count, 1).End(xlUp).Row

'seleciona a aba do banco e transmite os dados
For i = ActiveCell.Row To lin
With Sheets(Cells(i, 5).Text)
'redefine última linha da aba 'i'
lin = .Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
Range(Cells(i, 1), Cells(i, 4)).Copy
Range(.Cells(lin, 1), .Cells(lin, 4)).PasteSpecial
.Columns("A:D").AutoFit
End With
Next
Application.CutCopyMode = False

'mensagem de sucesso
MsgBox "Os dados foram transferidos!", vbOKOnly, "Sucesso!"
'habilita atualização de tela
Application.ScreenUpdating = True
End Sub

Teste aí e dê retorno.

Abraços e ótimo final de semana!

Postado

Genial,cara! Assim que testar eu falo dos ajustes finais, porque os ajustes iniciais já ficaram 100%, e só tenho a agradecer.

abração, ótimo fim de semana, muita diversão e lazer!..

  • 5 anos depois...
Postado

Olá, gostaria de saber como faço pra pegar uma célula e por exemplo. 

digitar uma palavra (uma placa de um carro) e ao apertar ENTER ela preencher os outros campos da tabela?


claro que buscando em um banco de dados já pré estipulado e preenchido.

  • 4 meses depois...
Postado

Bom dia pessoal!

Fiquei interessado no quesito Macro do Excel conforme consta na discussão acima, mas não consigo utilizá-lo em meu favor. Saberiam como me ajudar?

Na minha planilha preciso executar uma mesma fórmula por 31 células seguidas na mesma coluna. Após isso a fórmula sofre uma pequena alteração e torna a executar por mais 31 células. Este processo precisa ser executado uma quantidade de vezes X.

Agradeço quem puder.

Crie uma conta ou entre para comentar

Você precisa ser um usuário 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 comunidades 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

×
×
  • Criar novo...