Pergunte aqui
0

Extrair dados - Macros

perguntadas 2017-02-22 22:18:50 +0200

imagem do gravatar de mdiego

Boa noite Pessoal!

Alguém sabe se dar para fazer extração de dados de um planilha para outra baseado em critérios?

Por exemplo:
Na base de dados eu tenho: Setor, Data, Código, Defeito A, Defeito B...

Na outra planilha eu teria o local para colocar os critérios.
Exemplo Setor : Alimentação Data : Janeiro Código: de 7000 até 8000 e 10.000 até 15.000 IF SETOR == Alimentação && Data == Janeiro && Código >= 7000 && <=8000 && 10.000 && 15.000 Then Enfim, não entendo muito bem disso.

Se alguém puder me ajudar fico grato.

Atenciosamente,

editar alterar tag assinalar como ofensivo fechar mesclar Excluir

Comentários

Forneça mais detalhes, quando menciona de uma planilha para outra, são dois arquivos ou abas de um arquivo. No campo Data esta registrado Janeiro ou é uma data dia/mês/ano ??

imagem do gravatar de Gilberto SchiavinattoGilberto Schiavinatto ( 2017-02-23 02:38:23 +0200 )editar

Boa noite Gilberto!

Então, eu fiz algumas mudanças.... Janeiro está registrado como 1, Fevereiro 2 e assim por diante. São abas de um arquivo... Eu tenho vários critérios para extrair, conseguir fazer por fórmula, mas não ficou legal... Fica muito pesado. Exemplo > Critérios: 1º Pertencer a um setor que eu especificar ZAMAC por exemplo. 2º Data inicial mês 1 até mês 3 3º do codigo 10.000 até o 20.000 não pode ser entre a extração, só que preciso extrair de 10.000 para baixo e 20.00 para cima.

imagem do gravatar de mdiegomdiego ( 2017-02-23 03:06:06 +0200 )editar

3 Respostas

0

respondidas 2017-02-24 01:32:50 +0200

updated 2017-02-24 01:38:27 +0200

Oi @mdiego, de uma olhada neste arquivo teste

Esta semi automatizada com uma macro.

Mas pode-se fazer a filtragem diretamente na base dados com autofiltro e copiar e colar em outro lugar.

A copia só mostrar´os visíveis pelo autofiltro.

É algo parecido com isso que necessita?

Veja ajuda: https://help.libreoffice.org/Calc/Fil...

editar assinalar como ofensivo Excluir Link mais
0

respondidas 2017-02-24 14:24:45 +0200

imagem do gravatar de Beto

updated 2017-02-24 14:28:15 +0200

Como você não disponibilizou o arquivo teste do seu caso fica mais difícil de tentar ajudar. Mesmo assim, pelo relato, creio que você deveria usar a Dados>Tabela dinâmica, os recursos dela para extrair dados de outra planilha são incríveis. Consiste em você selecionar a tabela em questão seguir o menu acima. Ela cria automaticamente outra planilha com os dados selecionados. Um teste na figura abaixo, depois de ter escolhido os campos, você clica com o botão direito do mouse em cima do código e escolhe o item 'filtro', depois na janela de diálogo, escolhe o campo código, insere o valor igual ou maior que cinco, acrescenta o 'E', novamente, a mesma cosa e o valor menor ou igual a nove, conforme o 'print' abaixo. veja que os outros dados desaparecerão, como mostrará a próxima figura. Assita este vídeo que achei numa busca rápida com. instruções básicas de uso deste recurso

Descrição da imagem

Descrição da imagem

editar assinalar como ofensivo Excluir Link mais

Comentários

Beto usei isso em algumas, mas é muito complexo o que eu tenho. Usei TD e Somases- Funcionou mas está lento demais.

imagem do gravatar de mdiegomdiego ( 2017-02-25 04:42:11 +0200 )editar
0

respondidas 2017-02-24 03:18:36 +0200

imagem do gravatar de mdiego

updated 2017-02-25 23:26:58 +0200

imagem do gravatar de Grafeno

Gilberto, boa noite!

A ideia é boa... O que ocorre é o seguinte: Tem setor que tem peça de 1000 até 15.000 30.000 até 60.000 Exemplo ficticio. Acredito que eu tenho seu email, vou enviar para você entender o que estou dizendo (Se você permitir enviar), talvez você tenha uma outra ideia. Comecei a escrever uma macro.... Não reparem no código, porque não sei programar e nem identação. Mas está me trazendo os resultados que eu quero.

Sub Filtro()

'Declaraçao das variáveis
    Dim Cell As Object
    Dim sCriterio As Variant

 'Declaração da planilha
    oPlanilha = ThisComponent.Sheets.getByName("Base")
    oRelatorio = ThisComponent.Sheets.getByName("Relatório")
 'Laço de repetição para verificar se a contém valores ou se é vazio    
    Do
    Lin = Lin+1
    oCel = oPlanilha.getCellByPosition( 1,Lin )
    Loop Until  oCel.String = ""
 'Comparar se a coluna é diferente de vazio e exibir uma mensagem   
        If Lin <>"" Then
            For I = 1 To Lin-1  'Laço que vai da primeira linha até a última
                sCriterio  = oRelatorio.getCellByPosition(1,0).String 'Obtém o valor da célula de crtitério
                sCriterio2 = oRelatorio.getCellByPosition(1,1).String
                sCriterio3 = oRelatorio.getCellByPosition(1,2).String
                sCriterio4 = oRelatorio.getCellByPosition(1,3).String
                oValorCellA = oPlanilha.getCellByPosition(0,I).String 'Obtém o valor da célula
                oValorCellB = oPlanilha.getCellByPosition(1,I).String
                oValorCellC = oPlanilha.getCellByPosition(2,I).String
                    'Compara se o valor da celula A é Igual o Critério da Coluna E2
                        If   oValorCellA = sCriterio  And  oValorCellB = sCriterio2 And  oValorCellC >= sCriterio3 And  oValorCellC <= sCriterio4 Then
                             oPlanilha.getCellByPosition(10,I).String = sCriterio'Cola o dados na planilha
                        End If  
            Next
        End If      
 End Sub
editar assinalar como ofensivo Excluir Link mais

Comentários

Aguardo, a noite dou uma analisada. email: gilberto@schiavinatto.com

imagem do gravatar de Gilberto SchiavinattoGilberto Schiavinatto ( 2017-02-24 13:20:31 +0200 )editar

É possível construir intervalos no filtro avançado. Você deve repetir a coluna e colocar os critérios:

Setor         Data   Código   Código
Alimentação    1     >=7000   <=8000
Alimentação    1     >=10000  <=15000

As colunas são interpretadas pelo operador lógico "E" enquanto as linhas pr "OU".

imagem do gravatar de GrafenoGrafeno ( 2017-02-26 15:29:06 +0200 )editar

Obrigado Grafeno e Gilberto! ontem eu consegui fazer uma macro invocando a formula sumifs. Deu tudo certo, agora tô com um problema... Tenho um array d2:AQ2 --- Eu utilizei uma macro que você fez para uma pessoa aqui no fórum... Classificou certinho... o problema é que eu precisava classificar do maior para o menor e a descrição acima teria que ir junto.... Exemplo D1 - AAAA D2 10---- Se eu classificar teria que ir D1 junto com D2

imagem do gravatar de mdiegomdiego ( 2017-02-26 17:51:28 +0200 )editar

@mdiego, veja a minha resposta a outra questão que vocẽ abriu.

imagem do gravatar de GrafenoGrafeno ( 2017-02-26 18:44:17 +0200 )editar
Login/Registrar para responder

Ferramentas de perguntas

1 seguidor

Estatísticas

Perguntadas: 2017-02-22 22:18:50 +0200

Lidas: 478 vezes

Última atualização: Feb 25 '17