Caro Diego, Boa Noite.
Se você tivesse anexado logo de início a planilha eu teria conseguido perceber a sua real necessidade.
Mas, enfim, ela está aquí e a minha sugestão também.
Fiz uma planilha com as suas informações.
Não tem Macro nem VBA. Só funções comuns.
Está neste link: 05-08-2010--PESSOA FISICA-sugestao-Mazzaropi.xls
__________________________________________________ ______________
Caso você ou alguém queira entender o processo da solução, segue abaixo a explanação.
Mais importante do que dar a solução é mostrar como foi feito.
O peixe mata a necessidade urgente da fome, mas aprender a pescar, garante o futuro.
Cenário:
1) Você tem uma relação que contém eventos que podem se repetir no quesito: NOME e que precisa ser consolidada.
2) Você necessita de um relatório final com a lista consolidada no quesito: NOME e com valores referentes aos mesmos somados indexadamente, incluindo a quantidade de ocorrências de cada evento único.
Restrição:
1) O relatório final não pode conter linhas em branco.
2) A relação não tem obrigação de possuir nenhum tipo de ordenação prévia.
Entendendo a solução:
Como precisamos de gerar um relatório com todos os eventos(Nomes) não repetidos, necessitamos inicialmente de dois(2) Dados:
a) Quantos são e onde estão os eventos únicos no quesito: NOME?
........Para isto utilzaremos a coluna E e será colocado na célula E2 (mesma linha do primeiro evento da relação) a seguinte fórmula:
=SE(A2="";"";SE(CONT.SE($A$1:A2;A2)>1;"";MÁXIMO($E$1:E1)+1))
Ela irá marcar onde aparece cada novo nome e somar +1.
Com isto saberemos no final quantos são os nomes diferentes e onde estão eles acontecendo pela primeira vez.
Copie esta fórmula até na linha onde se encontra o último registro preenchido.
b) Quais são os eventos únicos no quesito: NOME?
........Para isto utilizaremos a coluna F e será colocado na célula F2 (mesma linha do primeiro evento da relação) a seguinte fórmula:
=SE(ÉERROS(CORRESP(LIN(A1);E:E;0));"";ÍNDICE(A:A;CORRESP(LIN(A1);E:E;0)))
Ela pesquisará indexados pela coluna E, os diferentes nomes em seus respectivos lugares já apontados pela coluna E.
Copie esta fórmula até na linha onde se encontra o último registro preenchido.
Utilizaremos de mais uma célula apenas para registrar o total de eventos únicos(Nomes) encontrados.
Para isto utilizaremos a coluna G e será colocado na célula G2 a seguinte fórmula:
=MÁXIMO(E2:E138;1)
Esta célula irá reduzir drasticamente o consumo de processamento gasto na geração da aba Relatório Final.
Quanto maior a relação, maior o benefício agregado por esta célula na planilha.
As colunas utilizadas E, F e G podem ficar ocultas ou serem colocadas onde melhor convier à estrutura da sua planilha.
Para melhor apresentação do relatório final, foi criada uma nova Aba Relatório Final.
Nela estão todas as informaçções desejadas:
a) Nome
b) Quantidade de ocorrências do Nome
c) Soma dos valores encontradas em cada ocorrência do Nome
As fórmulas utilizadas são:
a) Nome
.....A primeira linha a ser utilizada para o relatório é a A4, apenas por questões estéticas.
A fórmula em A4 é:
=SE(LIN()-3>'PESSOA FISICA'!$G$2;"";'PESSOA FISICA'!F2)
Ela controla a linha a ser gerada, indexadamente pelo total de eventos(Nomes) diferentes encontrados.
Aí entra em ação a célula G2 da ABA Pessoa Física.
Depois simplesmente faz uma referência direta à célula que contém os nomes diferentes.
Copie esta fórmula até na linha onde julgar necessário para a completitude do relatório. Neste caso foi gravada até a linha 150, célula A150.
b) Quantidade de ocorrências do Nome
A fórmula em B4 é:
=SE(LIN()-3>'PESSOA FISICA'!$G$2;"";CONT.SE('PESSOA FISICA'!$A$2:$A$138;A4))
Ela controla a linha a ser gerada, indexadamente pelo total de eventos(Nomes) diferentes encontrados.
Aí entra em ação a célula G2 da ABA Pessoa Física.
Depois faz uma contagem direta da célula A4 na relação da Aba Pessoa Física, obtendo-se assim a quantidade de repetições deste nome.
Copie esta fórmula até na linha onde julgar necessário para a completitude do relatório. Neste caso foi gravada até a linha 150, célula B150.
c) Soma dos valores encontradas em cada ocorrência do Nome
A fórmula em C4 é:
=SE(LIN()-3>'PESSOA FISICA'!$G$2;"";SOMARPRODUTO(('PESSOA FISICA'!$A$2:$A$138=A4)*('PESSOA FISICA'!$B$2:$B$138)))
Ela controla a linha a ser gerada, indexadamente pelo total de eventos(Nomes) diferentes encontrados.
Aí entra em ação a célula G2 da ABA Pessoa Física.
Depois faz uma soma dos valores indexados referentes à célula A4 na relação da Aba Pessoa Física.
Foi utilizada a função SOMARPRODUTO, que é especialmente preparada para este tipo de soma indexada.
Copie esta fórmula até na linha onde julgar necessário para a completitude do relatório. Neste caso foi gravada até a linha 150, célula C150.
c.q.d.
Bem, esta foi a lógica utilizada.
Desculpem se o texto ficou longo.
Mas faço questão de explicar tudo o que foi feito para mostrar que não existe nada de misterioso no desenvolvimento das soluções.
Existe sim trabalho, lógica e dedicação.
Caso os moderadores do fórum julguem que é inconveniente este tipo de explicação e o tamanho dos textos, por favor, me informem.
Qualquer pergunta estou inteiramente à disposição.
Espero ter ajudado.
Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel