Jump to content
Sign in to follow this  
mik

Excel dúvida #2

Recommended Posts

Não consigo resolver uma situação de converter string para argumento numa função, nem mesmo com recurso moderado ao google (surpreendente até).

função por ex. =LARGE(array;k)

o argumento matriz pode ser do tipo A1:A4, A1:B4, como {1;3;4} (julgo que este último é chamado de 'array constants')

é neste último tipo de argumento que estou a ter problemas

dada a facilidade de criar um string com os dados pretendidos, alguém sabe como converter em argumento deste tipo?

 

Share this post


Link to post
Share on other sites

Não percebi a duvida, mas sei que para informar o excel que se trata dum array, ao invês de enter depois de inserires a fórmula na célula tens de fazer ctrl+shift+enter

 

mas não sei se era essa a tua duvida porque se inserires por exemplo a formula =LARGE({1;2;3;4;5};1) funciona perfeitamente

Share this post


Link to post
Share on other sites

a dúvida não é essa

produzo uma string através de (por ex.) ="{"&A5&";"&3&";"&B7&"}" em que retorna (por ex.) "{1;3;4}"

o problema está na conversão dessa string para array constant (que é o que não sei/consigo fazer) para usar como argumento na função LARGE (por ex.)

Share this post


Link to post
Share on other sites

isso com exemplo era mais fácil, porque não estou a perceber lol

anyway já tentaste dar um nome à celula e chamar o nome na fórmula?

Share this post


Link to post
Share on other sites

não tentei, porque não estou habituado nem quero usar esse método de dar nome a listas, matrizes, etc.

o exemplo que deste é suficiente para expor o problema, porque o queria fazer já o fiz de outra maneira (muito mais exaustiva, para contornar este problema que indiquei).

como referiste, =LARGE({1;2;3;4;5};1) funciona perfeitamente.

mas =LARGE({1;2;D8;4;5};1) ou  =LARGE({1;2;INDIRECT(D8);4;5};1), já não funciona.

 

isto porque a ideia é que os números de 1 a 5 que exemplificaste, são dados dinâmicos obtidos de outras funções

 

uma das soluções é construir um array constant através de concatenação (por ex. ="{"&A5&";"&3&";"&B7&"}") e converter em formato array constant para usar na função LARGE.

a função LARGE não aceita intervalos descontínuos (curiosamente MAX e MIN aceitam, porque o argumento em vez de array é num), daí a tentativa de utilização de um array constant.

fico espantado porque não consigo converter "{1,6}" num argumento do tipo array constant para a função LARGE, (nem com recurso ao google consegui encontrar solução) e gostava de fechar esta questão, pois pode ser importante e expedito para situações futuras

 

ps: e desde já agradeço a tua disponibilidade

Edited by mik
agradecimento

Share this post


Link to post
Share on other sites

Mas não consigo perceber uma coisa, se obtens os valores individualmente, porque estás depois a fazer concatenação? Porque não distribuir esses valores individualmente cada um na sua célula e pronto tens o array feito podendo usar indirect numas, noutras fixo, como quiseres

Share this post


Link to post
Share on other sites

esse foi o princípio da solução "exaustiva" que acabei por fazer, e sim, face ao poder do excel é quase sempre possível sistematizar uma solução

a dúvida é simplesmente ter uma string "{1;6}" e poder converter em {1,6} para poder utilizar em funções com argumentos array

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×