mik Posted November 8, 2017 Share Posted November 8, 2017 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 More sharing options...
Perks Posted November 8, 2017 Share Posted November 8, 2017 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 More sharing options...
mik Posted November 8, 2017 Author Share Posted November 8, 2017 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 More sharing options...
Perks Posted November 8, 2017 Share Posted November 8, 2017 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? Link to comment Share on other sites More sharing options...
mik Posted November 8, 2017 Author Share Posted November 8, 2017 (edited) 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 November 8, 2017 by mik agradecimento Link to comment Share on other sites More sharing options...
Perks Posted November 8, 2017 Share Posted November 8, 2017 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 More sharing options...
mik Posted November 8, 2017 Author Share Posted November 8, 2017 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 More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now