- Este tópico contém 3 respostas, 3 utilizadores e foi actualizado pela última vez há 13 anos, 1 mês por jorgerod.
-
AutorArtigos
-
-
26 de Novembro de 2011 às 22:20 #1015AnónimoInactivo
gostaria que alguém me desse uma sugestão de como resolver este problema:
coluna a: nº de telefone;
coluna b: data em que o número é atribuído a um funcionário;
coluna c: tempo que decorreu desde a data em que o número foi atribuído ao funcionário, hoje()-b#;
coluna d: nome do funcionário.os números de telefone da empresa são sempre os mesmos, mas os funcionários vão mudando. assim é necessário saber quem é da lista, o actual proprietário de número de telefone.
o proprietário será aquele que para o mesmo número tenha um valor mais baixo na coluna c.analisando a tabela, verificamos que ao joão e ao chico foi atribuído o mesmo número de telefone “91 345 00 00”, verificamos também que, o proprietário neste momento é o chico “tempo decorrido desde a atribuição menor”.
as funções Índice e corresp poderiam resolver o problema não fosse ter que considerar a coluna c com o valor menor e o estas pararem na primeira linha que encontram.
a b c d
n.º telm data atrib tempo decorrido nome funcionário1 91 345 00 00 01-11-2011 50 joão
2 91 300 66 99 05-11-2011 21 manuel
3 91 232 09 89 12-10-2011 45 antónio
4 91 300 66 99 01-10-2011 56 zé
5 91 345 00 00 15-10-2011 10 chico
6 91 887 77 33 18-09-2011 69 franciscoformula pretendida
digitando um número de telefone, devolve o nome do funcionário, tendo em conta que se houver vários registos do mesmo número de telefone, será considerado o funcionário que tem o número à menos tempo.
desde já o meu muito obrigado pela ajuda.
-
27 de Novembro de 2011 às 17:43 #1752AnónimoInactivo
a solução que encontrei para o seu problema passa por determinar em primeiro o minimo valor na coluna d para cada telefone, isso consegue-se com uma formula de matriz {=mÍnimo(se($b$2:$b$100=h2;$d$2:$d$100))} veja exemplo em anexo.
na coluna ao lado utilizamos a formula índice e corresp para determinar segundo o minimo valor encontrado o funcionário detentor atual do telemóvel =Índice($a$1:$e$100;corresp(i2;$d$2:$d$100;0)+1;5) ver exemplo em anexo
como não tenho muito tempo não vou tentar outras alternativas, provavelmente consegue-se o mesmo resultado com apenas uma formula, pode ser que jorge rodrigues dê outra sugestão.
-
2 de Dezembro de 2011 às 2:18 #1754jorgerodAdministrador
boas,
aproveitando o que se encontra no anexo, talvez juntar as duas fórmulas num só segmento de código:
{=Índice($a$1:$e$100;corresp(mÍnimo(se($b$2:$b$100=h2;$d$2:$d$100));$d$2:$d$100;0)+1;5)}
como foi dito e bem, tem que ser como matriz, ou seja com as {}, conseguidas através das teclas ctrl + shift + enter.
-
2 de Dezembro de 2011 às 9:46 #1016AnónimoInactivo
bom dia,
hoje como fiz ponte tenho mais algum tempo apesar de ter projectos em curso e muito que trabalhar, decidi demonstrar em video como se transforma uma formula em matricial com o exemplo do post e demonstrar como transformar as duas primeiras formulas em uma só como fez o jorge, fica também bastante claro como se transforma a formula em matricial.
este tema das formulas matriciais dá pano para mangas para explica-lo a quem nunca teve contacto com elas, por isso recomendo ver os vídeos do excelisfun, é em inglês mas ninguém como eles explicam este tema, explicam tão bem que até parece em português!!!, vou deixar aqui o link para uma serie básica de vídeos.
vejam o video em ecrã inteiro e 720p
http://www.youtube.com/watch?v=i_-m30rvj2gexcel array formula series #1: basics of array formulas – canal excelisfun
‘http://www.youtube.com/user/excelisfun#p/search/0/vqfiksmx7me
-
-
AutorArtigos
- Tem de iniciar sessão para responder a este tópico.