olá meus amigos!
como eu consigo a partir de uma lista de produtos que podem se repetir, criar uma segunda lista de cópia, agrupando os nomes dos produtos sem eles repetirem?
agradeço a ajuda e atenção!!
desejo um ótimo dia a todos.
olá meus amigos!
como eu consigo a partir de uma lista de produtos que podem se repetir, criar uma segunda lista de cópia, agrupando os nomes dos produtos sem eles repetirem?
agradeço a ajuda e atenção!!
desejo um ótimo dia a todos.
@Cabelo essa informação tem que ser uma lista de opção, ou as informações devem apenas estar listadas nas células?
oi Conrado, não entendi essa pergunta, mas seria assim:
A B C
leite 2 Lista dos nomes sem repetir
pão 3 leite
suco 1 pão
leite 1 suco
suco 2 tomate
tomate 3
essa lista da coluna C teria que ser criada automaticamente.
obs. a idéia final é eu poder juntar numa planilha3 os nomes contidos na coluna A das planilhas 1 e 2, mas est é um passo depois, se eu conseguir só fazer a lista automaticamente já uma grande ajuda.
obs2: não pode ser em macro, tem que ser fórmula e usarei também uma versão no excel.
obrigado pelo apoio.
me desculpe mas o comentário ficou todo bagunçado sem a formatação que eu fiz, vou postar novamente abaixo com a imagem
** não consigo colocar imagem e nem formato de tabela para exemplificar
@Cabelo, basicamente o que você precisa é tabela dinâmica, mas, se for possível postar a imagem ou a planilha exemplo ajuda muito
oi amigo, a tabela dinâmica não ficou legal para esse resultado, mas consegui uma solução que postei ali mais para baixo.
obrigado.
Ola @cabelo, Segue um exemplo: Pode ser área, compara a linha toda.
Arquivo tem que ser ods.
'====================================================================
sub ExtrairUnicos
'sub ExtrairUnicos "Planilha1.B2:B14" , "Planilha1.C2" '(x as string, y as string)
'exemplo uso: ExtrairUnicos "Planilha1.A1:A8" , "Planilha2.A7"
'====================================================================
' fonte: http://www.clubedohardware.com.br/profile/697345-tiank/
rem ----------------------------------------------------------------------
Dim mCamposFiltro(0) As New com.sun.star.sheet.TableFilterField
xi = Split( "Planilha1.B2:b32","." )
yi = Split( "Planilha1.C40","." )
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
Ou esta que preenche as variáveis InputBox:
'====================================================================
sub ExtrairUnicosInputBox ' vai pedir "Planilha1.A1:A8" "Planilha2.A7"
'====================================================================
'http://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 Variant
Dim yi() as Variant
x = inputbox("Área de extração: (Ex: Planilha1.D2:C24)")
y = inputbox("Célula inicial para descarga: (Ex: Planilha2.C7)")
msgbox "Area de extração: "& X &" , Célula inicial para descarga: "& y
xi = Split( x,"." )
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
ATENÇÂO:: Para dar mais detalhes a sua pergunta, use na pergunta ou abaixo. Grato.
Caso a resposta atendeu sua necessidade, por gentileza, click na bolinha a esquerda da resposta, para finalizar a pergunta.
Gilberto!!
Obrigado pela resposta. Onde eu copio este código para que funcione?
Agradeço a ajuda.
oi Gilberto, agradeço imensamente sua ajuda, mas nesse caso eu preciso que seja em fórmula porque essa planilha será disponibilizada para mais pessoas que poderão, inclusive, usar o excel.
@cabelo, poste um arquivo modelo, use editar sua pergunta e use o ícone do clipe para anexar o arquivo.
No arquivo pode ser incluído nova coluna para trabalho ?
obrigado amigo pela ajuda, consegui uma solução que postei abaixo.
poderia ser incluída nova coluna sim hehe.
Segue modelo de tabela dinâmica.
Se você precisa juntar 02 planilhas em outra terceira, indico revisar a sistemática, pois isso fica inviável fazer em planilhas. Indico utilização do Base (Access)
olha só!
arrumei uma solução com um pequeno inconveniente, segue abaixo.
consegui resolver com a seguinte fórmula:
=SEERRO(ÍNDICE($D$250:$D$2289; CORRESP(0; CONT.SE($A$3:A3; $D$250:$D$2289); 0));"")
onde $d$250:$d$2289 é a origem (a lista que repete nomes)
$a$3:a3 é a célula imediatamente acima do inicio da lista que será criada, para comparar se já existe (só o primeiro é fixo e o segundo são as células pra baixo)
no final tem que dar ctrl+shift+enter e não apenas enter, para ele assumir que é uma fórmula de matriz.
depois disso só arrastar para baixo até onde for necessário.
desta forma funciona tanto no libreoffice quanto no excel.
o único inconveniente é que não consegui fazer funcionar com intervalo de células separadas, então tive que repetir a origem em sequência, de D250 até D2289, para ficarem contínuas.
agradeço os apoios e espero que ajude mais alguém.
christian cabelo.