terça-feira, 19 de março de 2013

Duvidas na net, Excel Como usar o Excel como banco de dados múltiplo?

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!





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

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...


Pronto vou criar um banco de dados simples com 3 colunas apenas...

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...
















Devemos colocar um filtro no cabeçalho da banco de dados...

depois da fórmula funcionando teremos que ir copiando ela de acordo com a necessidade...







Coloquei algumas informações fantasias para servir de exemplo...















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




EXPLICANDO O CÓDIGO PASSO A PASSO...

(para associar as suas necessidades faça testes trocando as referencias de células)

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...




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)...




e o resultado dessa ação será:

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...

Um comentário:

  1. 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