MAIS UMA DUVIDA POSTADA NA INTERNET SOBRE EXCEL
Segue....
Como usar o Excel como banco de dados múltiplo?
Olá, estou desenvolvendo uma planilha de controle de custos de viagens, meu pai é motorista e deve controlar os gastos e receitas como combustível, pedágios, etc. A planilha que desejo fazer é de controle mensal, ou seja, a cada mês uma planilha nova para o controle. Gostaria de saber se é possível usar uma planilha só, mas de um modo de banco de dados múltiplo. Por exemplo, se eu estiver no mês de janeiro, eu digito 1 no campo A1 (mês) e a minha planilha mostra os dados do mês de Janeiro, caso digite 2, Fevereiro e assim sucessivamente. Sei fazer isso por índice, porém eu gostaria também de poder editar os dados na mesma planilha, o que não seria possível pois haveria a fórmula. Em resumo, quero ter vários dados em uma planilha só, tendo alternância entre eles apenas mudando uma célula, ou apertando algum botão, algum script ou macro (não tenho conhecimentos em programação de VB, mas se for necessário, posso tentar aprender algo na internet mesmo). Sei que dá pra ver os dados por fórmula ("índice, procv, proc"), mas não editá-los, mas eu gostaria também de edita-los.
Aguardo...grato!
Aguardo...grato!
Eu uso uma planilha que eu mesmo fiz aqui, que faz o
seguinte ao digitar um código (digito diretamente em uma
célula)
automaticamente é filtrado
célula)
automaticamente é filtrado
no meu banco de dados, vou mostrar aqui uma possivel
solução para o autor da pergunta acima.
PASSO A PASSO...
Abrir o Excel... e salvar como pasta de trabalho habilitada para macro...
DATA | MÊS | NOME
Veja que iniciei a partir
da linha 4, pois nas linhas anteriores irei por as minhas ideias rsrsrsrs.
Veja a célula em amarelo, é nela que iremos digitar o mês e o filtro será automaticamente, aplicado em nosso banco de dados..
Na célula B5, vou colocar uma fórmula que irá verificar se há alguma coisa digitada na célula referente a data, não havendo irá retornar vazio, se houver vai ver que mês corresponde a data digitada na célula a esquerda...
=SE(A5="";"";TEXTO(A5;"MMMM"))
SE(A5="" (se a célula A5 for igual a vazia)
;""; (faça vazio se não faça)
TEXTO(A5; (texto da célula A5 no formato?)
"MMMM" (mes completo ex: janeiro)
ao digitarmos uma data qualquer na célula A5 veja o que acontece...
;""; (faça vazio se não faça)
TEXTO(A5; (texto da célula A5 no formato?)
"MMMM" (mes completo ex: janeiro)
ao digitarmos uma data qualquer na célula A5 veja o que acontece...
depois da fórmula funcionando teremos que ir copiando ela de acordo com a necessidade...
CÓDIGO VBA QUE FARÁ A BUSCA...
Bom para efetuarmos o filtro vamos precisar de uma macro...
Então abrimos o Editor Visual Basic através do atalho "Alt + F11"
(imagem da tela do editor VB aberta)
Devemos dar um duplo clique na Plan1 na janela do Editor VB...
Se abrirá uma área em branco é nela que vamos escrever a nossa macro...
O código que irá fazer a busca é o seguinte...(o mesmo deverá ser colado na área de códigos da plan1)
Private Sub Worksheet_Change(ByVal Target As Range)
Dim celula_B1 As Range
Set celula_B1 = Plan1.Range("B1")
If Not Application.Intersect(celula_B1 , Range(Target.Address)) _
Is Nothing Then
If Plan1.Range("A5").Value = "" Then
Plan1.Range("A5").Select
Exit Sub
Else
End If
If Plan1.Range("B1").Value = "" Then
ActiveSheet.Range("$A$4:$C$200").AutoFilter Field:=2
Else
Data = Plan1.Range("b1").Value
ActiveSheet.Range("$A$4:$C$200").AutoFilter Field:=2, Criteria1:= _
Data, Operator:=xlOr, Criteria2:="="
Plan1.Range("A4").Select
Selection.End(xlDown).Select
If ActiveCell.Value = "FIM" Then
Selection.End(xlUp).Select
Else
End If
End If
End If
End Sub
celula_B1 = variável que eu criei, o nome é celula_B1 mas pode ser qualquer um...
Set celula_B1 = Plan1.Range("B1") aqui está informando ao código qual será a célula que será representado pela variável... no caso a célula B1 da plan1...
Plan1= planilha onde usaremos o nosso código...
Range("B1") = célula B1 dentro da planilha 1
Range("A5")= célula A5 dentro da planilha1
("$A$4:$C$200") aqui é a intervalo da minha tabela na caso desde o cabeçalho (linha 4) até a ultima linha... sendo que as colunas também a primeira que é a "A" até a ultima que é a "C" isso você vai adaptar a sua necessidade...
Plan1.Range("A4").Select
Selection.End(xlDown).Select
If ActiveCell.Value = "FIM" Then
Selection.End(xlUp).Select
Else
End If
End If
End If
End Sub Essa parte do código é importante, pois devemos colocar em qualquer linha da coluna "A" a palavra "fim"...
Private Sub Worksheet_Change(ByVal Target As Range)
Dim celula_B1 As Range
Set celula_B1 = Plan1.Range("B1")
If Not Application.Intersect(celula_B1 , Range(Target.Address)) _
Is Nothing Then
If Plan1.Range("A5").Value = "" Then
Plan1.Range("A5").Select
Exit Sub
Else
End If
If Plan1.Range("B1").Value = "" Then
ActiveSheet.Range("$A$4:$C$200").AutoFilter Field:=2
Else
Data = Plan1.Range("b1").Value
ActiveSheet.Range("$A$4:$C$200").AutoFilter Field:=2, Criteria1:= _
Data, Operator:=xlOr, Criteria2:="="
Plan1.Range("A4").Select
Selection.End(xlDown).Select
If ActiveCell.Value = "FIM" Then
Selection.End(xlUp).Select
Else
End If
End If
End If
End Sub
EXPLICANDO O CÓDIGO PASSO A PASSO...
(para associar as suas necessidades faça testes trocando as referencias de células)
Set celula_B1 = Plan1.Range("B1") aqui está informando ao código qual será a célula que será representado pela variável... no caso a célula B1 da plan1...
Plan1= planilha onde usaremos o nosso código...
Range("B1") = célula B1 dentro da planilha 1
Range("A5")= célula A5 dentro da planilha1
("$A$4:$C$200") aqui é a intervalo da minha tabela na caso desde o cabeçalho (linha 4) até a ultima linha... sendo que as colunas também a primeira que é a "A" até a ultima que é a "C" isso você vai adaptar a sua necessidade...
Range("A4") = célula A4
Plan1.Range("A4").Select
Selection.End(xlDown).Select
If ActiveCell.Value = "FIM" Then
Selection.End(xlUp).Select
Else
End If
End If
End If
End Sub Essa parte do código é importante, pois devemos colocar em qualquer linha da coluna "A" a palavra "fim"...
coloquei uma tabela com 200 linhas já prontas tipo copiei e colei a fórmula da coluna C, assim quando precisar de mais linhas é só ir inserindo quantas desejar mais não pode apagar a palavra fim, nao importa em qual linha ela esteja mais tem que existir...
IDEIAS EXTRAS
LISTA NA CÉLULA B1 PARA AGILIZAR A BUSCA
Coloquei na célula B1 uma lista suspensa com os 12 meses do ano assim é só selecionar ao invés de digitar o nome do mês, se não souber como se faz isso procure no blog o post passo a passo que fiz sobre lista suspensa...
TESTANDO O CÓDIGO
Pronto vamos testar, vou escolher na lista o mês janeiro e vou apertar enter 1 vez, de forma que ao apertar o enter a célula ativa para digitação irá automático para a próxima vazia na coluna A (data)...
o filtro baseado no mês escolhido e a seleção da ultima célula vazia assim podemos fazer isso e já digitarmos as novas informações...
OUTRA IDEIA
Uma outra ideia legal é colocar um SUBTOTAL vejam que acrescentei mais uma coluna onde vou digitar valores...
coloquei uma fórmula na parte de cima da planilha para saber o total exibido no filtro assim se você filtrar janeiro mostra o total de janeiro e etc, sendo que se nada for filtrado mostra o total geral...
Sendo que a mesma irá verificar desde a célula D4 até a célula D5000, ou seja quase 5 mil linhas, se precisar de mais é só acrescentar o numero...
Espero ter ajudado e o principal que você tenha compreendido e possa usar em sua necessidade...
Att; Edivan Cabral...
Valeu meu caro....isso pode me ajudar...se bem que agora estou com preguiça, a planilha é grande e quando eu tiver tempo eu faço hehe!
ResponderExcluir