quinta-feira, 14 de abril de 2016

Tem que ter categoria!

Para quem já acompanhou umas dicas anteriores, onde escrevi como usar o Calc como um banco de dados, está no meu blog pode conferir neste link: http://betobyte.blogspot.com.br/2014/02/a-necessidade-e-mae-da-invencao-quem.html . Agora vai poder incrementar e dar sequência vendo: como colocar categorias e suas respectivas subcategorias em um formulário, e para aqueles que querem se aprofundar nesse quesito, basta conferir também no Ask do libreoffice: https://ask.libreoffice.org/pt-br/question/58248/definir-o-endereco-de-colagem-na-macro/ . Vai ajudar a dar mais precisão no quesito da macro para transportar os dados de uma planilha para outra pois caso resolva fazer um banco de dados, não importa o tamanho, sempre é uma tarefa meticulosa.

Voltando ao nosso assunto: quando resolvemos categorizar algo, nos damos contas das inúmeras categorias a que pertencem nossos objetos ou itens… imagina então categorizar coisas de um supermercado, por exemplo. Cada categoria terá inúmeras subcategorias com isso rapidamente passamos de cem ou de mil… O que fazer para agilizar este processo sem ter que decorar números e nomes ou ainda percorrer uma lista sem fim para selecionar um item?

Vou dar um pontapé inicial e o resto fica por conta da criatividade de cada um. Em programação existem diversas maneiras de fazer e nenhuma é errada apenas mais ou menos dispendiosa de tempo e memória. No final das contas, a melhor maneira de fazer é aquela que sabemos, não é mesmo?

Vamos imaginar a seguinte situação temos 11 categorias e cada uma dessas 11 categorias tem 50 subcategorias, ou seja 550 itens de uma lista para clicar e escolher. Como cadastrar num formulário sem que isso fique muito complexo? E se aumentarmos o número de categorias? Confesso que eu tinha feito de um jeito que não foi muito prático a primeira vez, usando a função SE(), mas a linha de código ficava muito extensa e fácil de se perder. Mas resolvi utilizando PROCV() e um pouquinho de criatividade.

Vamos aproveitar e deixar previsto a possibilidade de chegarmos a 50 categorias por 50 subcategorias, ou seja, uma um total de 2500 subcategorias.


Vamos imaginar que na planilha2 tenhamos nosso formulário mais ou menos assim como esta figura abaixo:


comentário: *Como ficou fácil recortar figura no Libreoffice versão 5, me dei conta ao fazer este tutorial*.

Mas e agora, como puxar as subcategorias para que fiquem assim?


Na planilha1 vamos deixar a primeira coluna (A) para usarmos a função =PROCV()
Na coluna (B) Vamos preencher com as categorias e em linha, no lado direito de cada categoria, vamos colocando as subcategorias até o limite de 50.































Agora, voltamos a Planilha2 e vamos na célula (B5) onde serão selecionadas as categorias, clicamos nela para ficar selecionada e no menu escolhemos “validação”:



E no intem “permitir” escolhemos “Intervalo de Células” e em “Origem” inserimos o seguinte código: $Planilha1.$B$1:$B$50 e clicamos em “OK”









Agora vamos fazer que as opções de subcategoria apareçam de acordo com categoria escolhida. Para isso selecionamos a célula (B6) e repetimos a validação só que dessa vez colocamos o seguinte código: $Planilha1.$A$1:$A$50

Nada demais né? Mas como esse intervalo de células vai capturar as subcategorias? Ai é que entra a Função PROCV().

Entendendo o funcionamento da Função: Na célula A1 da Planilha1 inserimos a Função PROCV(), nela fazemos referência a célula do formulário (Planilha2, célula B5) onde será selecionada a Categoria (o critério da função), ou Seja: Planilha2.B5. Depois do critério da função (que separamos por “;”) devemos informar a Matriz, ou seja: de onde até onde se deve buscar estes dados. No caso de B1 a AZ da atual planilha. E em seguida informamos de qual coluna queremos os dados a ser mostrado e o zero no final é a ordem de classificação. Os cifrões em frente ao código é para facilitar a cópia por arrasto que não deixará mudar os valores.

  
Uma vez feita a primeira fórmula, copiamos a mesma arrastando para baixo atá a célula (A50), depois é só ir mudando na fórmula copiada o número da coluna que queremos capturar, para que ela possa transpor o dado. Baixe o arquivo aqui e estude-o, logo vai entender o processo. Aqui vídeo ainda explicando novamente este processo.


4 comentários:

  1. Olá ! Baixei o exemplo e deu tudo certo, no entanto a correlação fica engessada na célula B5 como faço para aplicar essa função para uma coluna inteira?

    ResponderExcluir
  2. Desculpe, se não entendi bem sua pergunta. Mas note que na coluna B ficam o s nomes das categorias e nas linhas ao lado (das outras colunas) seguem as subcategorias. Ou seja as categorias só devem ser digitadas na coluna B. Uma em baixo da outra. Já as subcategorias correm em linha, à direita. por exemplo: Em B1 a categoria é limpeza, e as Subcategorias de B1 são: C1, D1, E1... até AZ1 (completando umas 50 subcategorias. Ok?

    ResponderExcluir
  3. OLÁ creio que tenho a mesma dúvida do colega acima, a célula B5 fica engessada, na linha b6,b7,b8 ... precisava dar prosseguimento na fórmula na lista suspensa. Quando copio a validação para demais células a lista suspensa não da certo .

    ResponderExcluir
    Respostas
    1. Você baixou o arquivo de exemplo? Mas tem um sistema mais simples no canal veja o vídeo "Listas suspensas em cascatas com validação no Libreoffice". Ou copie e cole este link em seu navegador: https://www.youtube.com/watch?v=CQLOZ3WBhZw&t=40s

      Excluir

Matéria em destaque pelo editor.

Gere formulários PySimpleGui rapidamente para planilhas Excel, Libreoffice Calc e outros

CRUD  em BD e MENU - Gere programas completos rapidamente Vou te apresentar uma forma incrível de gerar aplicativos python em minutos a part...