Ir ao conteúdo
  • Cadastre-se

Extrair valores únicos 2


Posts recomendados

'====================================================================
sub Extrair_Unicos ' vai pedri "Planilha1.A1:A8" "Planilha2.A7"
'====================================================================
'https://www.clubedohardware.com.br/profile/697345-tiank/ (parcial)
rem ----------------------------------------------------------------------
Dim mCamposFiltro(0) As New com.sun.star.sheet.TableFilterField
Dim x as String
Dim y as String
Dim xi as String
Dim yi as String
   x = inputbox("Área de extração")
   y = inputbox("Célula inicial para descarga") 
      msgbox "Area de extração: "& X &" , Célula inicial para descarga: "& y
   xi = Split( x,"." ) '<===Erro aqui.......
   yi = Split( y,"." )
   oPlan = ThisComponent.Sheets.getByName( xi(0) )
   oIntervalo = oPlan.getCellRangeByName( xi(1) )
   '=> esta parte permanece idêntica <=
   'Descritor do filtro
   oDescFiltro = oIntervalo.createFilterDescriptor( True )
    'Definir os campos
   mCamposFiltro(0).Field = 0
   mCamposFiltro(0).Operator = 1
   'Estabelecer o destino
   oPlan = ThisComponent.Sheets.getByName( yi(0) )
   oDestino = oPlan.getCellRangeByName( yi(1) ).getCellAddress()
   '=> Restante permanece igual <=
   'Propriedades do filtro padrão
   oDescFiltro.ContainsHeader = False
   oDescFiltro.SkipDuplicates = True
   oDescFiltro.CopyOutputData = True
   oDescFiltro.OutputPosition = oDestino
   oDescFiltro.FilterFields = mCamposFiltro
   oIntervalo.Filter( oDescFiltro )
end Sub

Oi @TianK, estou tentando colocar esta Macro acima em um Menu, que ao acionar, ela peça a fonte (área a extrair) e a célula inicial da resposta.

porém esta dando erro na linha "xi = Split.........."

Por gentileza, poderia dar uma analisada.

Grato.

Link para o comentário
Compartilhar em outros sites

Em 25/12/2016 às 23:24, g.schiavinatto disse:

[...] ela peça a fonte (área a extrair) e a célula inicial da resposta.

porém esta dando erro na linha "xi = Split.........."

Por gentileza, poderia dar uma analisada.

Grato.

 

@g.schiavinatto , como você quer que o usuário forneça a área fonte (a extrair) e a célula destino (inicial da resposta)? Digitando as duas informações ou poderia, por exemplo, selecionar a área fonte e digitar o local de destino?

 

[]s.

TianK

Link para o comentário
Compartilhar em outros sites

@g.schiavinatto , bom dia!

 

Ainda não tive tempo para desenvolver outra solução. E eu pretendo fazer o mais breve possível. Porém, olhando (testando) seu código vi que a razão possível para o erro é a declaração  das variáveis xi e yi como String. Veja, o retorno da função Split() é uma matriz, portanto, tem que ser do tipo Variant.

 

Mude as linhas

Dim xi as String
Dim yi as String

para

Dim xi() as Variant
Dim yi() as Variant

 

E veja que seu código já vai funcionar para entradas nas InputBoxes como "Planilha1.A1:A8" e "Planilha2.A7". :thumbsup:

 

[]s.

TianK

Link para o comentário
Compartilhar em outros sites

Ok, @TianK passou este degrau, mas parou no próximo:

 

oPlan = ThisComponent.Sheets.getByName( xi(0) )

Erro em tempo de execução do BASIC. Variável não definida.

 

 

Nada urgente, sem pressa alguma e para seu "passa tempo".

 

Abraço

Bom Ano Novo

Saúde e mais Saúde....

Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois...

@g.schiavinatto , boa tarde!

 

Primeiramente um Feliz ano Novo! (atrasado)

 

Bem, passaram as festas de final de ano, e eu esbocei alguma coisa. O usuário seleciona o intervalo e depois duas inputboxes pedem a ele que forneça a planilha (o índice) e a célula que receberá os dados únicos. Fiz alguns testes para verificar se o intervalo selecionado e a célula destino fornecidas são válidos. Claro, longe de esgotar todas as possibilidades de erro, mas imagino que as subrotinas ficaram "utilizáveis".

 

Aguardo seu feedback sobre testes com a planilha anexa. Troque a extensão "zip" para "ods". :thumbsup:

 

[]s.

TianK

extrariunicos.zip

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...