Ir ao conteúdo
  • Cadastre-se
Franse

Copiar parte de uma tabela Excel a partir dos dois últimos eventos

Recommended Posts

Saudações, Amigos!

Estou a duas semanas enfrentando um problema, sem ter encontrado outro semelhante (nem em parte) por aqui e que, certamente, irão considerá-lo (no mínimo) interessante. :huh:

Embora me pareça que apenas uma fórmula possa resolvê-lo, ainda não consegui compô-la.

Caso possam me ajudar, trata-se de:

- Uma Tabela (A) em coluna, contendo uma série de eventos disposto em células separadas em linhas;

- Localizar os primeiros eventos anteriores em que os elementos constantes nas duas últimas linhas aparecem;

- Copiar para uma Tabela (B) o intervalo de linhas com os dois últimos eventos até a linha em que começam a se repetir.

Como uma descrição não me parece esclarecer o bastante, apesar de tê-la redigido algumas vezes, disponibilizei um exemplo em:

http://www.4shared.com/file/efLh0ldd/Como_criar_uma_nova_tabela_a_p.html

Confesso que gosto de desafios, mas este (apesar de aparentemente poder ser resolvido numa fórmula - ou duas...), está além da minha imaginação. :wub:

Fico muito grato pela atenção que puderem me dispensar.

Muito obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, Márcio

Obrigado pelo seu interesse em me ajudar. :) Realmente não sou muito bom em descrições, por não saber a terminologia adequada não consigo usar a ajuda do Excel na hora de localizar fórmulas... Por falar nisso, estou usando a versão 2007 ou a 2010.

O exemplo que coloquei no link acima é muito simplificado. Na verdade a "Tabela A" é uma extensa coluna com dados dispostos em linhas numeradas e em células separadas. Estas linhas são preenchidas diáriamente e numeradas (conforme o exemplo) em ordem crescente.

No momento não tento identificar as linhas que se repentem, mas localizar na Tabela A os conteúdos das celulas que compõem as duas últimas linhas (19 e 20, no exemplo), e a linha em que primeiro começam a aparecer, a partir destas últimas linhas (ou seja, a vez em que apareceram anteriormente), copiando este intervalo de linhas para a Tabela B.

O problema é: Preencher automaticamente a Tabela B (pré-existente) somente com o intervalo de linhas dos dois últimos eventos preenchidos na Tabela A até a linha em que um dos elementos contidos nas células dos dois últimos eventos ocorreu.

Assim, se na Tabela A existem 98 linhas:

Linha 01) 1 - 2 - 3

Linha 02) 4 - 5 - 6

...

Linha 22) 1 - 2 - 3

Linha 23) 4 - 5 - 6

Linha 24) 7 - 8 - 9

...

E as duas últimas linhas são:

Linha 97) 8 - 9 - 7

Linha 98) 7 - 5 - 8

A Tabela B exibirá as duas últimas linhas (97 e 98) e as que compõem o intervalo existente entre estas (97 e 98) e a que abriga a célula que contêm a última ocorrência anterior dos eventos contidos nas duas últimas linhas (97 e 98), ou seja a Linha 23 por conter o número 5 em uma de suas células. Ignorando todas as anteriores.

Desta forma, a Tabela B passará a exibir o intervalo entre as linhas 23 e 98, com a respectiva numeração original:

Linha 23) 4 - 5 - 6

Linha 24) 7 - 8 - 9

...

Linha 97) 8 - 9 - 7

Linha 98) 7 - 5 - 8

Obs.: Cada linha da Tabela A é composta por: uma célula contendo seu número de referência, seguido de dez células com dados. Como, por exemplo A2 a K2 que perfaz a linha 1.

Esperando ter conseguido me expressar melhor, aproveito para novamente lhe agradecer pela boa vontade, caro amigo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Franse

Não entendi a relação entre as ultimas linhas e a linha 23.

Voltando a tabela inicial (TABELA A) relação está na linha 2 HORIZONTAL e as linhas 10 e 29 na DIAGONAL, de baixo para cima e da esquerda para a direita. É isto?

Mande um exemplo completo como você chega ao resultado esperado.

Té +

Márcio

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, Márcio

O vínculo que existe entre as duas últimas linhas e as anteriores da Tabela A, que devem ser copiadas para a Tabela B, é, justamente, o conteúdo da linhas. Fator determinante para que elas e tão somente elas sejam as escolhidas.

Observe que as duas últimas linhas não se repetem em sua totalidade. Apenas os elementos que as compõem surge em outras.

Assim, no exemplo acima, temos o número "5" na última linha (98), constando o mesmo na linha 23.

Note que esta é a "primeira" vez que o número se repete, de baixo para cima, ou seja, do último evento até sua primeira ocorrência anterior.

O mesmo acontece com todos os demais números que compõe as linhas finais, 97 e 98, levando que o intervalo (feito pelas linhas onde os números se repetem) torne-se o resultado à ser exibido na Tabela B.

Com relação ao exemplo do link, a letra "J" foi a última a se repetir (de baixo para cima, da linha 20 a linha 10), por isso o intervalo entre a linha 10 e a linha 20 é que foi exibido na Tabela B.

Observe que o intervalo de linhas é sempre determinado pelo conteúdo das duas últimas linhas.

No exemplo acima:

Linha 97) 8 - 9 - 7

Linha 98) 7 - 5 - 8

Tendo suas respectivas ocorrências nas:

Linha 23) 4 - 5 - 6

Linha 24) 7 - 8 - 9

...

Conduzindo como resposta para preenchimento da Tabela B, o intervalo:

Linha 23) 4 - 5 - 6

Linha 24) 7 - 8 - 9

...

Linha 97) 8 - 9 - 7

Linha 98) 7 - 5 - 8

Ao passo de que no exemplo do link, as linhas determinantes são as duas últimas, também com os seus conteúdos precisando ser encontrados na Tabela A (em suas primeiras ocorrências):

19 A K L M N O P Q R S

20 A B C D E F G H I J

Em sua totalidade, são encontrados nas linhas:

10 QQ RR SS T U V X Y Z J

11 X Y Z KK LL MM NN OO I PP

12 NN OO Q QQ R SS TT H UU VV

13 TT UU VV P YY ZZ G KK LL MM

14 KK LL MM NN O F PP QQ RR SS

15 QQ RR S TT E UU N XX YY ZZ

16 X Y Z D KK LL MM M OO PP

17 VV OO C V BB GG SS LL TT X

18 AA B CC Z Y X V U L T

Somando das últimas duas linhas com as que ocorrêm, temos como resultado, na Tabela B:

10 QQ RR SS T U V X Y Z J

11 X Y Z KK LL MM NN OO I PP

12 NN OO Q QQ R SS TT H UU VV

13 TT UU VV P YY ZZ G KK LL MM

14 KK LL MM NN O F PP QQ RR SS

15 QQ RR S TT E UU N XX YY ZZ

16 X Y Z D KK LL MM M OO PP

17 VV OO C V BB GG SS LL TT X

18 AA B CC Z Y X V U L T

19 A K L M N O P Q R S

20 A B C D E F G H I J

Observe que os elementos que perfazem as duas últimas linhas podem se repetir nas instâncias anteriores (como no exemplo acima), mas a resposta à ser exibida na Tabela B deve, necessariamente, englobar todos os elementos que estão contidos nas duas últimas linhas.

Em etapas podemos dividir em:

1 - Identificar as duas últimas linhas da Tabela A (pois são variáveis, sendo preenchidas e modificadas diáriamente);

2 - Procurar (na Tabela A) as primeiras repetições (de baixo para cima) de todos os elementos que estão contidos nas duas últimas linhas;

3 - Copiar para a Tabela B todo o intervalo resultante, composto pelas duas últimas linhas e pelas linhas onde ocorrem as primeiras repetições de seus elementos.

Assim, o resultado na Tabela B mostra quando e com quem os dois últimos registros apareceram anteriormente, com o restante da Tabela A sendo, sumariamente, ignorado.

Pelas "Tabelas Bs" pode notar a importância deste resultado tanto em aplicações de malas diretas quanto de recepções (e etc).

É uma pena ainda não ter desenvolvido esta planilha até esta etapa, senão poderia postá-la, mas, seguindo o conselho de um amigo, estou elaborando um outro exemplo, baseado nos resultados de uma loteria, que talvez possa melhor ilustrar a situação, caso ainda tenha alguma dúvida.

:unsure: Lamento não estar conseguindo ser suficientemente claro, lhe agradeçendo pela paciência e pela sua disposição para com meu caso.

Fraternalmente...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, Márcio

Lamento o enorme atraso com o qual retorno, tive que enfrentar um período de crise - com a mãe de uma amiga doente e tendo que se submeter a uma operação, hora em que os familiares costumam se afastar, não sendo este caso uma exceção...

Mas foi com muita alegria que deparei-me com sua última postagem. Ainda mais quando baixei seu arquivo.

O algoritmo que criou é precisamente o que necessito. :D

Peço desculpas por ter errado na exposição dos elementos na planilha que postei, dando origem a sua dúvida.

Na Tabela A, o "K", presente em C20 da penúltima linha, tem sua primeira ocorrência anterior em B10 e, pior ainda, o "A", presente em B21 da última linha, tem sua primeira ocorrência anterior em K3, dando origem a parte que deve ser transferida para a Tabela B a partir da Linha 2 e não, como expus, a partir da Linha 10...

Realmente foi um erro grave que cometi, comprometendo completamente o resultado a ser obtido na Tabela B.

Principalmente do algorítimo que desenvolveu.

Sinto muito...

Em:

http://www.sendspace.com/file/pe6icc

Apresento a planilha corrigida.

A sua ideia de inserir marcadores nas linhas onde se encontram os elementos contidos nas duas últimas linhas é brilhante! :o

Tão boa que peço que a conserve...

Não consegui localizar as células em que inseriu as fórmulas, por isso não posso comentá-las. Como o algoritmo que desenvolveu vasculha toda a coluna, se limitar a busca até a primeira repetição (ou seja, localizar os elementos que compõem as duas últimas linhas em sua primeira ocorrência - do final, última linha, para o início, primeira linha), poderá ser através das marcações, que habilidosamente inseriu, que uma copia deste intervalo (das duas últimas linhas até a linha em que primeiro repetem os elementos que as compõem - de baixo para cima) seja repassada para a Tabela B, conforme a planilha que postei.

No exemplo acima, as linhas 97 e 98 são as últimas enquanto o elemento "5" presente na linha 23, faz com que o intervalo à ser copiado para a Tabela B seja os das linhas 23 até a 98.

Assim, podemos exemplificar como:

Se você voltar a se hospedar num hotel, tão logo seu nome seja inserido no sistema uma consulta é feita ao "banco de dados" (a planilha) e o recepcionista saberá quando "Márcio Rodrigues" se hospedou anteriormente. Quem o acompanhou na ocasião, sem deixar de visualizar todos os hóspedes desde então.

Muito legal, não? ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caro Márcio

Agradeço pelo seu interesse e, principalmente, pela paciência que está me dispensando.

Realmente a sua ideia de acrescentar um "x" nas linhas em que os eventos ocorrem é genial, mas, ao contrário do que mencionou na planilha que disponibilizou para download, nem sempre os valores são iguais numa mesma coluna, já que as linhas são preenchidas de forma aleatórias e por terceiros (sequer obedecendo uma ordem alfabética ou crescente), com as linhas só chegando às minhas mãos após terem sido preenchidas.

Provavelmente devo tê-lo induzido a este raciocínio pelo erro que cometi (pelo qual lamento e renovo minhas desculpas. :wacko:

Na Tabela A, da planilha que igualmente disponibilizei, pode observar que a letra "A", presente na última linha em B21 (ignorada ao se repetir na penúltima linha em B20), tem seu primeiro evento em K3, bem como a letra "K", presente na penúltima linha (em C20), tem seu primeiro evento em B10.

Há a possibilidade de adaptar a Macro que desenvolveu para atender a necessidade de identificar os elementos contidos nas duas últimas linhas independente da coluna em que estejam?

Assim, os "x" que identificam as linhas em que os eventos ocorrem poderiam atingir a Linha 2 abrangendo, assim, todas as que devem compor a Tabela B. ;)

Prometo que vou me dedicar um pouco ao estudo de Macros para poder, ao menos, melhor me expressar, compreender e, assim, cometer menos equívocos... :unsure:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caro Márcio

Não entendi. Na sua tabela a célula B2 tem valor "K" a C2 tem valor "L" e assim até J2 com valor "S". Estes valores estão também em C20 até K20, logo se identificar os elementos contidos nas duas últimas linhas independente da coluna em que estejam, como você pediu marcariam varias outras linhas com "x". Se possível mande uma tabela completa ou com mais dados e como você faria (explique passo a passo) o resultado desejado.

Té +

:confused: Márcio

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×