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

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.