Extrair dados - Macros

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,

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

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.

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: Filtro: Aplicar filtros avançados - LibreOffice Help

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

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

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

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

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

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

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