Quero fazer isso em um problema muito maior, mas escolhi o exemplo mais simples para prova de conceito.
Na parte inferior está um CSV do meu arquivo (com fórmulas).
Tenho dados para pontos (vértices do tetraedro):
Eu tenho um conjunto de dados derivados para suportes (arestas do tetraedro):
Estou tentando gerar "adaptavelmente" e "dinamicamente" a matriz correspondente aos IDs de Strut para todos os struts que têm uma correspondência nas colunas "S" ou "E" (não em uma pesquisa de coluna única) para o rótulo "D" e informe o ID do strut para os struts correspondentes.
Gostaria que o resultado ficasse assim:
Eu também gostaria de poder configurar pesquisas e tabelas semelhantes para outros nós diretamente abaixo do primeiro resultado, sem conflito de posição. Pelo que vi, as tabelas dinâmicas não oferecem meios de solução.
Vi uma referência a isso , mas não há informações suficientes para entender essa abordagem, nem para aplicá-la.
Alguém pode oferecer uma solução para o meu problema?
CSV:
- fórmulas
- atualizado com a entrada da resposta aceita atualizou o CSV com
- preparação para a próxima fase de “prova de conceito” para metodologia aplicada à análise estrutural de cúpula geodésica
|||||||||||||||||||||||||||
||||||Circumradius|1||||||||||||||||||||
||||||Edge Length|=H2*4/SQRT(6)||||||||||||||||||||
||||||Face Height|=H3*SIN(60*PI()/180)||||||||||||||||||||
||||||Tet Height|=SQRT(6)*H3/3||||||||||||||||||||
||||||Centroid|=H4/3||||||||||||||||||||
|||||||||||||||||||||||||||
|||||||||||||||||||||||||||
|||||||||||||||||||||||||||
ID|Node|G_ID||||x|y|z|||||||||||||||||||
A|1|A||||=H4-H6|0|0|||||||||||||||||||
B|2|B||||=-H6|=H3/2|0|||||||||||||||||||
C|3|C||||=-H6|=-H3/2|0|||||||||||||||||||
D|4|D||||0|0|=H5|||||||||||||||||||
|||||||||||||||||||||||||||
ID|Strut|G_ID|S|E||Vx|Vy|Vz||-Vx|-Vy|-Vz||Length||Sx|Sy|Sz||Ex|Ey|Ez|||||
AB|1|AB|A|B||=(U17-Q17)/$O17|=(V17-R17)/$O17|=(W17-S17)/$O17||=-G17|=-H17|=-I17||=SQRT( (U17-Q17)^2 + (V17-R17)^2 + (W17-S17)^2 )||=VLOOKUP($D17,$A$11:$I$14,7,0)|=VLOOKUP($D17,$A$11:$I$14,8,0)|=VLOOKUP($D17,$A$11:$I$14,9,0)||=VLOOKUP($E17,$A$11:$I$14,7,0)|=VLOOKUP($E17,$A$11:$I$14,8,0)|=VLOOKUP($E17,$A$11:$I$14,9,0)|||||
BC|2|BC|B|C||=(U18-Q18)/$O18|=(V18-R18)/$O18|=(W18-S18)/$O18||=-G18|=-H18|=-I18||=SQRT( (U18-Q18)^2 + (V18-R18)^2 + (W18-S18)^2 )||=VLOOKUP($D18,$A$11:$I$14,7,0)|=VLOOKUP($D18,$A$11:$I$14,8,0)|=VLOOKUP($D18,$A$11:$I$14,9,0)||=VLOOKUP($E18,$A$11:$I$14,7,0)|=VLOOKUP($E18,$A$11:$I$14,8,0)|=VLOOKUP($E18,$A$11:$I$14,9,0)|||||
CA|3|CA|C|A||=(U19-Q19)/$O19|=(V19-R19)/$O19|=(W19-S19)/$O19||=-G19|=-H19|=-I19||=SQRT( (U19-Q19)^2 + (V19-R19)^2 + (W19-S19)^2 )||=VLOOKUP($D19,$A$11:$I$14,7,0)|=VLOOKUP($D19,$A$11:$I$14,8,0)|=VLOOKUP($D19,$A$11:$I$14,9,0)||=VLOOKUP($E19,$A$11:$I$14,7,0)|=VLOOKUP($E19,$A$11:$I$14,8,0)|=VLOOKUP($E19,$A$11:$I$14,9,0)|||||
DA|4|DA|D|A||=(U20-Q20)/$O20|=(V20-R20)/$O20|=(W20-S20)/$O20||=-G20|=-H20|=-I20||=SQRT( (U20-Q20)^2 + (V20-R20)^2 + (W20-S20)^2 )||=VLOOKUP($D20,$A$11:$I$14,7,0)|=VLOOKUP($D20,$A$11:$I$14,8,0)|=VLOOKUP($D20,$A$11:$I$14,9,0)||=VLOOKUP($E20,$A$11:$I$14,7,0)|=VLOOKUP($E20,$A$11:$I$14,8,0)|=VLOOKUP($E20,$A$11:$I$14,9,0)|||||
DB|5|DB|D|B||=(U21-Q21)/$O21|=(V21-R21)/$O21|=(W21-S21)/$O21||=-G21|=-H21|=-I21||=SQRT( (U21-Q21)^2 + (V21-R21)^2 + (W21-S21)^2 )||=VLOOKUP($D21,$A$11:$I$14,7,0)|=VLOOKUP($D21,$A$11:$I$14,8,0)|=VLOOKUP($D21,$A$11:$I$14,9,0)||=VLOOKUP($E21,$A$11:$I$14,7,0)|=VLOOKUP($E21,$A$11:$I$14,8,0)|=VLOOKUP($E21,$A$11:$I$14,9,0)|||||
DC|6|DC|D|C||=(U22-Q22)/$O22|=(V22-R22)/$O22|=(W22-S22)/$O22||=-G22|=-H22|=-I22||=SQRT( (U22-Q22)^2 + (V22-R22)^2 + (W22-S22)^2 )||=VLOOKUP($D22,$A$11:$I$14,7,0)|=VLOOKUP($D22,$A$11:$I$14,8,0)|=VLOOKUP($D22,$A$11:$I$14,9,0)||=VLOOKUP($E22,$A$11:$I$14,7,0)|=VLOOKUP($E22,$A$11:$I$14,8,0)|=VLOOKUP($E22,$A$11:$I$14,9,0)|||||
|||||||||||||||||||||||||||
||||||||||||||||||||||||Struts joined at identified nodes (contributors to force/moment equations)|||
|||||||||||||||||||||||||||
|||||||||||||||||||||||||Node|ID|Strut
|||||||||||||||||||||||||4|=INDEX($A$11:$A$14,MATCH(Z27,$B$11:$B$14,0),1)|"{=IFERROR(INDIRECT(""B""&SMALL(IF((AA27=$D$17:$D$22)+(AA27=$E$17:$E$22),ROW($D$17:$D$22),""""),ROW($D$17:$D$22)-16)),"""")}"
|||||||||||||||||||||||||||"{=IFERROR(INDIRECT(""B""&SMALL(IF((AA27=$D$17:$D$22)+(AA27=$E$17:$E$22),ROW($D$17:$D$22),""""),ROW($D$17:$D$22)-16)),"""")}"
|||||||||||||||||||||||||||"{=IFERROR(INDIRECT(""B""&SMALL(IF((AA27=$D$17:$D$22)+(AA27=$E$17:$E$22),ROW($D$17:$D$22),""""),ROW($D$17:$D$22)-16)),"""")}"
|||||||||||||||||||||||||||"{=IFERROR(INDIRECT(""B""&SMALL(IF((AA27=$D$17:$D$22)+(AA27=$E$17:$E$22),ROW($D$17:$D$22),""""),ROW($D$17:$D$22)-16)),"""")}"
|||||||||||||||||||||||||||"{=IFERROR(INDIRECT(""B""&SMALL(IF((AA27=$D$17:$D$22)+(AA27=$E$17:$E$22),ROW($D$17:$D$22),""""),ROW($D$17:$D$22)-16)),"""")}"
|||||||||||||||||||||||||||"{=IFERROR(INDIRECT(""B""&SMALL(IF((AA27=$D$17:$D$22)+(AA27=$E$17:$E$22),ROW($D$17:$D$22),""""),ROW($D$17:$D$22)-16)),"""")}"
|||||||||||||||||||||||||||
|||||||||||||||||||||||||Node|ID|Strut
|||||||||||||||||||||||||1|=INDEX($A$11:$A$14,MATCH(Z35,$B$11:$B$14,0),1)|"{=IFERROR(INDIRECT(""B""&SMALL(IF((AA35=$D$17:$D$22)+(AA35=$E$17:$E$22),ROW($D$17:$D$22),""""),ROW($D$17:$D$22)-16)),"""")}"
|||||||||||||||||||||||||||"{=IFERROR(INDIRECT(""B""&SMALL(IF((AA35=$D$17:$D$22)+(AA35=$E$17:$E$22),ROW($D$17:$D$22),""""),ROW($D$17:$D$22)-16)),"""")}"
|||||||||||||||||||||||||||"{=IFERROR(INDIRECT(""B""&SMALL(IF((AA35=$D$17:$D$22)+(AA35=$E$17:$E$22),ROW($D$17:$D$22),""""),ROW($D$17:$D$22)-16)),"""")}"
|||||||||||||||||||||||||||"{=IFERROR(INDIRECT(""B""&SMALL(IF((AA35=$D$17:$D$22)+(AA35=$E$17:$E$22),ROW($D$17:$D$22),""""),ROW($D$17:$D$22)-16)),"""")}"
|||||||||||||||||||||||||||"{=IFERROR(INDIRECT(""B""&SMALL(IF((AA35=$D$17:$D$22)+(AA35=$E$17:$E$22),ROW($D$17:$D$22),""""),ROW($D$17:$D$22)-16)),"""")}"
|||||||||||||||||||||||||||"{=IFERROR(INDIRECT(""B""&SMALL(IF((AA35=$D$17:$D$22)+(AA35=$E$17:$E$22),ROW($D$17:$D$22),""""),ROW($D$17:$D$22)-16)),"""")}"
|||||||||||||||||||||||||||
|||||||||||||||||||||||||Node|ID|Strut
|||||||||||||||||||||||||2|=INDEX($A$11:$A$14,MATCH(Z43,$B$11:$B$14,0),1)|"{=IFERROR(INDIRECT(""B""&SMALL(IF((AA43=$D$17:$D$22)+(AA43=$E$17:$E$22),ROW($D$17:$D$22),""""),ROW($D$17:$D$22)-16)),"""")}"
|||||||||||||||||||||||||||"{=IFERROR(INDIRECT(""B""&SMALL(IF((AA43=$D$17:$D$22)+(AA43=$E$17:$E$22),ROW($D$17:$D$22),""""),ROW($D$17:$D$22)-16)),"""")}"
|||||||||||||||||||||||||||"{=IFERROR(INDIRECT(""B""&SMALL(IF((AA43=$D$17:$D$22)+(AA43=$E$17:$E$22),ROW($D$17:$D$22),""""),ROW($D$17:$D$22)-16)),"""")}"
|||||||||||||||||||||||||||"{=IFERROR(INDIRECT(""B""&SMALL(IF((AA43=$D$17:$D$22)+(AA43=$E$17:$E$22),ROW($D$17:$D$22),""""),ROW($D$17:$D$22)-16)),"""")}"
|||||||||||||||||||||||||||"{=IFERROR(INDIRECT(""B""&SMALL(IF((AA43=$D$17:$D$22)+(AA43=$E$17:$E$22),ROW($D$17:$D$22),""""),ROW($D$17:$D$22)-16)),"""")}"
|||||||||||||||||||||||||||"{=IFERROR(INDIRECT(""B""&SMALL(IF((AA43=$D$17:$D$22)+(AA43=$E$17:$E$22),ROW($D$17:$D$22),""""),ROW($D$17:$D$22)-16)),"""")}"
|||||||||||||||||||||||||||
|||||||||||||||||||||||||Node|ID|Strut
|||||||||||||||||||||||||3|=INDEX($A$11:$A$14,MATCH(Z51,$B$11:$B$14,0),1)|"{=IFERROR(INDIRECT(""B""&SMALL(IF((AA51=$D$17:$D$22)+(AA51=$E$17:$E$22),ROW($D$17:$D$22),""""),ROW($D$17:$D$22)-16)),"""")}"
|||||||||||||||||||||||||||"{=IFERROR(INDIRECT(""B""&SMALL(IF((AA51=$D$17:$D$22)+(AA51=$E$17:$E$22),ROW($D$17:$D$22),""""),ROW($D$17:$D$22)-16)),"""")}"
|||||||||||||||||||||||||||"{=IFERROR(INDIRECT(""B""&SMALL(IF((AA51=$D$17:$D$22)+(AA51=$E$17:$E$22),ROW($D$17:$D$22),""""),ROW($D$17:$D$22)-16)),"""")}"
|||||||||||||||||||||||||||"{=IFERROR(INDIRECT(""B""&SMALL(IF((AA51=$D$17:$D$22)+(AA51=$E$17:$E$22),ROW($D$17:$D$22),""""),ROW($D$17:$D$22)-16)),"""")}"
|||||||||||||||||||||||||||"{=IFERROR(INDIRECT(""B""&SMALL(IF((AA51=$D$17:$D$22)+(AA51=$E$17:$E$22),ROW($D$17:$D$22),""""),ROW($D$17:$D$22)-16)),"""")}"
|||||||||||||||||||||||||||"{=IFERROR(INDIRECT(""B""&SMALL(IF((AA51=$D$17:$D$22)+(AA51=$E$17:$E$22),ROW($D$17:$D$22),""""),ROW($D$17:$D$22)-16)),"""")}"
O link da sua pergunta é bom, mas precisa ser ajustado da seguinte forma.
Insira como uma fórmula de matriz
{}
pressionando Ctrl+ Shift+ Enter. O resultado é 4, 5 e 6 conforme você solicitou.Ajustes:
INDIRECT("B"&
— No seu caso, você quer o valor da coluna B, não o índice.X25=
em vez de"a"=
porque você deseja o valor dessa linha.ROW($D$17:$D$22)-16
em vez deROW()-2
porque o número da linha é da coluna D, e não do local onde você está colocando a fórmula.EDITAR :
A
OR
função em si não funcionará em uma fórmula de matriz; portanto, use o+
operador.Resultado: 2, 3, 6
Em relação ao seu outro comentário, não se baseia diretamente no tamanho da fonte - a matriz resultante é realmente tão grande, apenas alguns dos resultados são strings vazias (na
""
fórmula). Você pode adicionar um filtro para ocultar resultados vazios selecionando a coluna Y, indo para Data > Auto Filter e desmarcando (empty) .