Tenho um monte de informações, como segue:
0 1 2 3 4 ...
'0 'C1 '81 '40 '1 ...
(Para sua informação: a segunda linha contém números hexadecimais e estou usando-a '
para que o Excel evite converter valores como '12
(que é 18, dezoito) em 12 (doze).
Eu sei sobre funções, como =ToRow()
e =ToCol()
para converter dados em uma única linha ou coluna. Eu também sei que funções como =Sequence()
são capazes de criar uma matriz bidimensional, mas não encontro uma função ToMatrix()
ou .ToArray()
Alguém sabe uma maneira fácil de fazer isso no Excel 365?
desde já, obrigado
Você pode fazer isso com uma função lambda:
vá em fórmulas / gerenciador de nomes / novo e digite:
v_stack
=LAMBDA(rng,cols,rows,IF(COLUMNS(rng)>cols,VSTACK(TAKE(rng,rows,cols),v_stack(DROP(rng,0,cols),cols,rows)),rng))
Agora você tem uma função "v_stack" recebendo três argumentos
decompondo a fórmula:
Não tenho certeza se esta é a ordem que você espera:
=WRAPROWS(TOCOL(A1:SR2,,1),32)
Holandês:
=OMLOOP.RIJEN(NAAR.KOLOM(A1:SR2;;1);32)
Ou:
=LET(a,A1:SR2,INDEX(a,1+MOD(SEQUENCE(32,,0),2),SEQUENCE(,32)+INT(SEQUENCE(32,,0,0.5))*32))
Holandês:
=LET(a;A1:SR2;INDEX(a;1+REST(REEKS(32;;0);2),REEKS(;32)+GEHEEL(REEKS(32;;0;0,5))*32))
Com base nesta resposta da techcommunity , embora algo mais simples provavelmente seja possível:
A única coisa que eu mudei foi adicionado no
TRANSPOSE()
parâmetro array, já que eles começaram com 2 colunas em vez de 2 linhas. E alterei o wrapcount para 32, conforme sua pergunta. E outra transposição em torno da coisa toda.Isso envolve as duas linhas na largura especificada e, em seguida, intercala os dois resultados.
Esta versão apenas cria uma matriz diretamente, percorrendo cada célula de saída por vez.