Supondo que seja aceitável classificar a tabela Locais, a solução mais simples envolve apenas uma fórmula relativamente curta de validação de dados e alguns intervalos nomeados. Nenhuma coluna ou linha auxiliar é necessária.
Configure duas planilhas de exemplo Locations
e Assets
, assim:
Adicione dois nomes definidos:
Areas
→ =Locations!$A:$A
IDs
→ =Locations!$C:$C
Por fim, adicione uma validação de dados da Lista suspensa na célula C2
na Assets
planilha com a seguinte fórmula e preencha / copie e cole a célula para baixo:
=INDEX(IDs,MATCH(A2,Areas,0)):INDEX(IDs,MATCH(A2,Areas,0)+COUNTIF(Areas,A2)-1)
As desvantagens deste método são:
- Nomes definidos precisam ser usados
- A tabela Locais deve ser classificada
- Outras tabelas na folha Locais não podem cruzar com segurança a
Area
coluna, a menos que seja garantido que eles não contenham valores correspondentes aos valores da tabela Localização Area
.
A solução alternativa a seguir supera as desvantagens, exceto a outra tabela. No entanto, ele usa células na planilha de ativos para armazenar os itens das listas suspensas.
A planilha de ativos é configurada com colunas adicionais:
Desta vez, a C2
fórmula de validação de dados é:
=IF(SUMPRODUCT(--ISNA(C2:INDEX(2:2,COLUMN(C2)-1+COUNTA(C2:INDEX(2:2,COLUMNS(2:2))))))=0,$I$1,C2:INDEX(2:2,COLUMN(C2)-1+COUNTA(C2:INDEX(2:2,COLUMNS(2:2)))-SUMPRODUCT(--ISNA(C2:INDEX(2:2,COLUMN(C2)-1+COUNTA(C2:INDEX(2:2,COLUMNS(2:2))))))))
Digite esta fórmula D2
e preencha:
=
IF(
SUMPRODUCT(
--ISNA(
E2:INDEX(
(2:2),
COLUMN(E2)-1+MAX(1,COUNTA(E2:INDEX(2:2,COLUMNS(2:2))))
)
)
)=0,
"ERROR",
"ok"
)
Matriz de várias células - insira essa última fórmula nas células, começando E2
e indo até a direita, como o número máximo de locais esperados em uma área (para o exemplo mostrado que eu usei E2:I2
):
=
INDEX(
Locations!$C:$C,
IFERROR(
SMALL(
IFERROR(1/(1/(
(Locations!$A$2:INDEX(Locations!$A:$A,COUNTA(Locations!$A:$A))=IF($A2="",NA(),$A2))
*ROW($A$2:INDEX($A:$A,COUNTA(Locations!$A:$A)))
)),FALSE ),
COLUMN(INDEX(2:2,1):INDEX(2:2,MAX(2,COUNTIF(Locations!$A$2:INDEX(Locations!$A:$A,COUNTA(Locations!$A:$A)),$A2))))
),
NA()
)
)
:
, mas isso não faz sentido. Validação de dados que tendem a cuspir esse erro para um monte de razões ;-). Estou usando o Excel 2007, e validação de dados tem mudado nas próximas versões, mas não deve ter afetado essa fórmula. ...=A2:A8
( apenas no caso ;-)) e tente copiar a tabela Locais para a planilha Ativos e altere os nomes definidos para apontar para as duas colunas. Finalmente, após o último teste, tente alterar os nomes definidos na fórmula para usar as colunas diretamente. Se você possui o Excel 2010 ou superior, tente também usar as colunas na folha Locais diretamente. Isso é realmente intrigante.