Notifications
Clear all

Indicar STATUS de última ocorrência, com critérios.

39 Posts
3 Usuários
0 Reactions
6,453 Visualizações
(@vic7or)
Posts: 94
Estimable Member
Topic starter
 

Prezados colegas do fórum,
tenho uma condição a acrescentar em uma função que foi elaborada com a ajuda do nosso companheiro ninja Bernardo, no meu problema (resolvido), no tópico: Indicar STATUS de última ocorrência de um item na planilha..

Há algum tempo vim com um problema para resolver a questão da quantidade de registros que possuo em tabelas aqui no trabalho.
Diariamente são registradas centenas de linhas e, desde 2009, é mantido dessa forma.
Hoje, tais registros são repetidos, mas alterando apenas as outras informações.

Tomo como exemplo, a simulação de um consultório médico.

Um paciente vai diversas vezes com certo dr. para realizar exames periódicos.
Ou seja, ele pode ir uma vez em 2009, outra em 2010, mais uma em 2011.. ..... enfim,
ou pode ir uma vez por mês, de 2009 até 2013.

O que importa, nesse caso, é que a cada vez que o paciente vai ao consultório, é registrado o que este paciente têm como resultado de exame.

Resumindo a problemática:
É necessário buscar o valor do exame anterior e o de origem desse paciente, de acordo com um critério.
Na simulação, apresento dois tipos de tratamento: CONSULTA (para averiguar a saúde ou o estado da doença do paciente) e EXAME (que executará um tratamento para eliminar ou amenizar a doença do paciente). O critério, para encontrar o resultado anterior e o primeiro resultado do paciente, é que só vale para o tratamento de EXAME clínico.

Segue um print do exemplo ideal, em anexo:

O que quero aprender, é como acrescentar uma condição na fórmula.

Dizer, na fórmula:
"olha só, traga tais resultados, onde minha condição seja satisfeita".

Se eu aplico a condição "SE" ele executa a função, mas só na linha onde o critério é satisfeito.

{=SE(CONT.SE($B$2:B2;B2)=1;"primeira visita";INDIRETO("D"&MÁXIMO(SE($B$1:B1=B2;LIN($B$1:B1))))} - Função original, que busca o anterior, sem critérios.

Queria aprender onde inserir a condição, de forma correta, dentro dessa função.

A forma mais correta é usar a função "E" ? Que busca verdadeiro ou falso e retorna o resultado se for verdadeiro?

Segue, em anexo, o caso de uso atualizado, com a simulação, para caso alguém deseje ver o problema de forma mais explicada.

A primeira aba, é o caso de uso - explicando o problema e exemplificando (com o mesmo exemplo da imagem em anexo)
A segunda aba, é a planilha que trás resultados sem nenhum critério.
A terceira aba, é o exemplo onde poderei utilizar a forma com critérios, para saber se está funcionando. Esta, possui os dados que devem aparecer, com a fórmula.

 
Postado : 02/07/2013 12:23 pm
(@vic7or)
Posts: 94
Estimable Member
Topic starter
 

RETIFICAÇÃO.

Fiz umas correções na tabela da pasta "TRATAMENTO = EXAME".

 
Postado : 03/07/2013 7:37 am
(@vic7or)
Posts: 94
Estimable Member
Topic starter
 

Nossa, se não fosse esse detalhe, a fórmula que você fez estaria perfeita.

Ela foi muito bem elaborada com tal condição, Pedro.

Obrigado pelo suporte.

O caso é que, ao indicar um novo paciente, tal função não se adequa. Pois a busca faz referência à condição do tratamento apenas e não diferencia os pacientes.

=/

 
Postado : 03/07/2013 8:15 am
(@pedro)
Posts: 362
Reputable Member
 

Cara, ta complicado...

Por acaso tu pode trabalhar com esses dados ordenados por paciente (em ordem alfabética), e a subordem dos registros de de cada paciente pela data?

Se puder, fica mais fácil...

Não estou conseguindo uma lógica que funcione com os nomes misturados... Não conheço nenhum recurso que considere o "último", se alguém conhece seria só substituir o "máximo" pelo "último" daí resolveria seu problema... Mas não conheço a lógica...

Olha como eu fiz no exemplo...

 
Postado : 03/07/2013 1:35 pm
(@vic7or)
Posts: 94
Estimable Member
Topic starter
 

Cara, eu posso sim trabalhar dessa forma.
Depois, eu copio os valores e coloco como "valor" e ordeno por data, novamente.

Eu estou analisando sua fórmula, e vendo que quase deu o que tinha que dar.
Só está faltando ordenar os resultados, de forma correta.

Porque, com tal fórmula apresentada no anexo anterior, temos o resultado da anomalia ATUAL. E precisamos buscar a anterior.

=/

É complicado pra caramba, mesmo.

 
Postado : 04/07/2013 5:22 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Fala Doutores,

Tá resolvido? O que está precisando?

vic7or, faz da mesma forma que fez no tópico anterior que dou uma olhada...

Qualquer coisa da o grito.
Abraço

 
Postado : 04/07/2013 7:40 am
(@vic7or)
Posts: 94
Estimable Member
Topic starter
 

Opa, Bernardo, beleza?

Pois então, o resumo da trama é que você e o handrix, no tópico anterior, conseguiram resolver o meu problema. Que era buscar o STATUS de ORIGEM (primeiro status) e o STATUS ANTERIOR (ao atual).

Usei sua solução:

=SE(CONT.SE($colunaB$:colunaB2;colunaB2)=1;"Primeira visita";INDIRETO("colunaX"&MÍNIMO(SE($colunaA$1:colunaA1=colunaA2;LIN($colunaA$1:colunaA1)))))

Onde realizava a contagem de quantas vezes o paciente apareceu e, se fosse igual a 1, está seria a primeira visita. Senão, buscaria o valor referente ao menor valor do STATUS. Buscando na linha anterior.
Isto, para descobrir a Origem.

=SE(CONT.SE($colunaB$:colunaB2;colunaB2)=1;"Primeira visita";INDIRETO("colunaX"&MÁXIMO(SE($colunaA$1:colunaA1=colunaA2;LIN($colunaA$1:colunaA1)))))

Fazendo a mesma coisa, mas indicando o valor onde a maior incidência do status apareceu. Buscando na linha anterior.

Esta duas fórmulas estavam atendendo, Bernardo. E agradeço muito por você ter ajudado nisso.

Hoje, a condição mudou.
Há a entrada de dados referentes outros critérios.
Na simulação que eu fiz, eu adicionei 2 critérios ao tipo de visita (tratamento): Exame e Consulta
Antes, contávamos apenas com a visita ao médico, independente do que fosse.
Hoje, devemos contar as informações de STATUS ANTERIOR e PRIMEIRO STATUS a partir de uma condição.
E a condição é:
Buscar o STATUS ANTERIOR e o PRIMEIRO STATUS, por paciente, onde o TRATAMENTO = EXAME, de acordo com a ordem de visita, pela data (que já virá ordenada do menor para o maior).

O Pedro me ajudou muito a entender como adicionar critérios às fórmulas.
Ele, até chegou a apresentar duas fórmulas que chegaram bem próximas do que eu estou procurando.

Elas, estão no anexo deste post, na primeira ABA. Bem explicado.

Na segunda condição, ele perguntou se não teria problema de ordenar os pacientes por nome e, depois pela data.
Não tem problema nenhum. Preciso apenas buscar as informações. Depois eu colo como valor. Sem fórmula. E ordeno de volta por DATA.

Mas a fórmula dele não está vindo de acordo com a STATUS ANTERIOR e PRIMEIRO STATUS (resultados) a partir da data, por paciente e por TRATAMENTO = EXAME.

RESUMO DO RESUMO:

Você encontrou a fórmula para encontrar o RESULTADO ANTERIOR e o PRIMEIRO RESULTADO do PACIENTE, de acordo com a data (ordenada do menor para o maior), por VISITA.
Hoje, é preciso aplicar essa mesma fórmula, mas diferenciando o TIPO de VISITA. Que é o tratamento. Exame ou Consulta. E buscar apenas os RESULTADOS ANTERIORES e os PRIMEIROS, a partir dos tratamentos de EXAME.

O Pedro tá sendo muito prestativo. Agradeço monstruosamente a ele.
E a todos aqui também, pois aprendo fórmulas mais robustas para serem utilizadas.

 
Postado : 04/07/2013 9:15 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde vic7or,

Cara, vamos ser mais objetivo... acho que entendi mas não tenho certeza.

Primeiro, qual a planilha em que você vai realmente utilizar no trabalho?

Além da condição do "NOME" você quer incluir a condição do "TRATAMENTO"?

Faça igual no tópico anterior, informe manualmente e corretamente alguns valores (não precisa ser todos, é só para conferir, se uns 3 ~ 5 baterem o restante vai bater) e me envie que analisarei.

Qualquer coisa da o grito.
Abraço

 
Postado : 04/07/2013 9:59 am
(@vic7or)
Posts: 94
Estimable Member
Topic starter
 

Boa noite, caro Bernardo.

Apresento, a seguir, a imagem dos dados como devem ser (apenas como valor).

E, na planilha modelo (com vários registros de pacientes, com datas diferentes, e tratamentos diferentes), as linhas G e H, são os modelos do que precisamos.

A sua função, Bernardo, trazia a informação correta, do que eu precisava, quando o tipo da visita médica (tratamento) não era um critério.
Hoje, deve ser aplicado a condição de que se deve buscar o RESULTADO ANTERIOR e o PRIMEIRO RESULTADO, a partir da ordem de ocorrência da visita (de acordo com a DATA). Mas, dessa vez, sendo necessário indicar os TRATAMENTOS = EXAME.

O nosso amigo Pedro quase conseguiu resolver o problema. Ele é safo pra caramba.
=)

Segue, novamente, o anexo, sem as fórmulas na ABA "POR TRATAMENTO = EXAME"

Relembrando, que na primeira aba, é apenas a explicação do problema. Com um exemplo prático, utilizando as fórmulas que eu obtive com a ajuda de vocês.
Na segunda aba, é o resultado, 100% correto, utilizando a fórmula que o Bernardo utilizou. Mas, sem o critério de que o Tratamento tem que ser igual a EXAME.
Na terceira ABA, que é a principal área pra testarmos a fórmula, é onde possuímos dados que são "como devem ser". Dentro de uma simulação de um consultório médico que faz tratamentos de consulta e exames.

 
Postado : 04/07/2013 7:55 pm
(@vic7or)
Posts: 94
Estimable Member
Topic starter
 

Respondendo, agora, de forma bem sucinta. xD

Estou querendo buscar os valores dos resultados ANTERIOR e ORIGEM de cada paciente, mas de acordo com o tipo de tratamento.

A condição é que deva buscar o resultado anterior e o primeiro resultado com o tratamento = EXAME.

A fórmula do Pedro quase deu certo, mas foi retirada a busca por paciente. Com isso, a fórmula não traz os resultados 100% corretos se trabalharmos com vários pacientes (o que é o real caso de uso).

A fórmula que o Bernardo desenvolveu traz os resultados 100% corretos, mas sem o critério tratamento = EXAME.

Talvez, a resolução desse caso é fundir as duas funções. Hahaha

Segue em anexo a planilha simplificada também.
Com dados "como devem ser" e os dados "como estão vindo" ... =)

 
Postado : 10/07/2013 7:28 am
(@pedro)
Posts: 362
Reputable Member
 

Bom dia!

Deixa eu compilar as informações até o momento...

Na planilha VERSÃO 5, na aba POR TRATAMENTO = EXAME, na coluna J, você quer a fórmula que misture os critérios e a dinâmicidade de diversos pacientes (misturar a formula que eu adaptei e a que o bernardo desenvolveu?), e retorne o resultado anterior de cada paciente, ou se "Primeiro Exame" ou se "Sem exame"...

É ISTO?

Se for, estou analisando, caso eu não tenha entendido (pois passei uns dias sem acompanhar a situação) por favor me explique de novo...

Quando eu chegar à algum resultado retorno aqui, mas vou acompanhar caso eu não tenha entendido e tu corrija meu raciocínio...

 
Postado : 10/07/2013 8:36 am
(@pedro)
Posts: 362
Reputable Member
 

cara, não tenho certeza, mas da uma olhada neste resultado, ficou uma linha pra cima, de repente tu enxerga um erro por conhecer melhor os dados...

 
Postado : 10/07/2013 9:05 am
(@vic7or)
Posts: 94
Estimable Member
Topic starter
 

Primeiramente, peço para desconsiderar a planilhaV5_simplificado acima.
Pois houve uma incoerência no momento em que editei a planilha por conta da fórmula

(INDIRETO("E"&MÁXIMO(SE(........)))

Pois é uma string. O "E" foi alterado para "F", que é a coluna que busca os resultados de cada tratamento.

=)

Desculpe pelo erro bobo.

Este erro altera apenas os resultados das fórmulas, mas não as linhas com os resultados "Como devem ser"

 
Postado : 10/07/2013 10:42 am
(@vic7or)
Posts: 94
Estimable Member
Topic starter
 

to analisando a proposta do Pedro. Já volto.

=)

 
Postado : 10/07/2013 10:47 am
(@vic7or)
Posts: 94
Estimable Member
Topic starter
 

cara, não tenho certeza, mas da uma olhada neste resultado, ficou uma linha pra cima, de repente tu enxerga um erro por conhecer melhor os dados...

Pois é, Pedro, agradeço muitíssimo sua resposta.
E, mais que isso, peço desculpas pelo erro que cometi ao reenviar a planilha V5_Simplificada.

Eu, inocentemente adicionei uma coluna no inicio o que alterou toda a estrutura, por questão da fórmula

(INDIRETO("E"&MÁXIMO(SE(....))))

usar STRING para identificar a coluna.
Ocasionando o erro.

E, voltando para a sua fórmula apresentada na Versão 6, foi exatamente esta a correção que você fez, não?

E sei o motivo pelo qual ela não está batendo corretamente.

Não está vindo exatamente de acordo com a linha do "Como deveria ser" por que a referência da fórmula está se referenciando somente ao resultado do tratamento. E não ao paciente. Veja que, na fórmula do Bernardo, a referência é exata por estar fazendo a busca por paciente. Sua fórmula substituiu a busca por paciente e está buscando apenas o tipo de tratamento.

A fórmula do Bernardo faz a busca pelo paciente:

INDIRETO("F"&MÁXIMO(SE($D$49:D50=D51;LIN($D$49:D50)))

A sua fórmula, está realizando o critério que queremos, mas "engoliu" a busca pelo paciente, substituindo-a pelo critério de buscar pelo tipo de tratamento:

INDIRETO("F"&MÁXIMO(SE($E$49:E49="Exame";LIN($F$49:F49)))

Por isso eu tinha pensado em fundir as duas funções. Hahaha
Está faltando isso. =)

 
Postado : 10/07/2013 11:18 am
(@vic7or)
Posts: 94
Estimable Member
Topic starter
 

Resumindo o textão acima:

Pedro, o motivo por não estar batendo as fórmulas é porque a sua fórmula funciona perfeitamente, caso seja apenas um paciente.
Mas, quando há mais de um paciente (que é o real caso de uso, serão milhares de indivíduos), a fórmula mistura os resultados de todos os pacientes, como se fosse de um só paciente.
A fórmula do Bernardo não possui o critério de buscar pelo tratamento (que foi o que você fez), mas ela faz a busca pelo paciente. Por isso, a condição dele se enquadra perfeitamente. Só não consigo incluir, na fórmula dele, o critério de buscar pelo TRATAMENTO = EXAME.

Você bateu na trave, meu herói! Hahaha

Acho que se juntarmos a sua fórmula e a do Bernardo, matamos essa bomba.

=)

Você conseguiu entender?

É pra buscar o RESULTADO de ORIGEM e o ANTERIOR, de cada paciente, onde o tratamento for exame.

A ABA "TRATAMENTO = EXAME" possui o mesmo exemplo da aba de caso de uso, mas com vários pacientes.
A fórmula pode ser jogada la pra testar. =)

 
Postado : 10/07/2013 11:28 am
Página 2 / 3