Jump to content

Excel dúvida #2


mik
 Share

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?

 

Link to comment
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

Link to comment
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.)

Link to comment
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
Link to comment
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

Link to comment
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

Link to comment
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
 Share

  • 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.