Fórmula do Excel - consultando um intervalo que resulta em um intervalo

3

Eu tenho um intervalo no Excel (B3: C8) do qual eu quero filtrar as pessoas inglesas. No SQL, isso seria muito simples:
SELECT Persons FROM [myTable] WHERE Nationality = 'English'

Como posso aplicar uma filtragem semelhante em um intervalo em que o resultado não é um único valor, mas um intervalo?
Observação: o Excel tem um botão de filtro, mas tudo o que faz é esconde as linhas indesejadas. Eu não quero linhas escondidas.

É assim que eu quero que minha tabela seja. Como deve ser a fórmula do G3?

    
por user24752 29.12.2011 / 21:15

5 respostas

3

Para obter os nomes em um intervalo, você poderia transformar seus dados em uma tabela e criar uma tabela dinâmica com Nacionalidade como filtro de relatório e Pessoas como o rótulo de linha . Em seguida, escolha inglês na lista de nacionalidade. Veja a captura de tela abaixo (ignore a coluna D, pois ela não foi usada);

    
por 29.12.2011 / 22:29
3

Digite isso no G3 e arraste para baixo. É uma fórmula de matriz, portanto, deve ser inserida usando Ctrl Shft Enter

=IFERROR(INDEX($B$3:$B$8,LARGE(($C$3:$C$8=$E$3)*(ROW($B$3:$B$8)-2),COUNTIF($C$3:$C$8,$E$3)-(ROWS($3:3)-1))),"")

Observe que o IfError só está disponível no XL 2007/10; caso contrário, você precisará usar:

=IF(ISERROR(INDEX($B$3:$B$8,LARGE(($C$3:$C$8=$E$3)*(ROW($B$3:$B$8)-2),COUNTIF($C$3:$C$8,$E$3)-(ROWS($3:3)-1)))),"",INDEX($B$3:$B$8,LARGE(($C$3:$C$8=$E$3)*(ROW($B$3:$B$8)-2),COUNTIF($C$3:$C$8,$E$3)-(ROWS($3:3)-1))))
    
por 30.12.2011 / 00:10
2

Esta versão funcionará em qualquer versão do Excel e fornece os resultados na ordem listada

Na G3:

=IF(ROWS(G$3:G3)>COUNTIF(C$3:C$8,E$3),"",INDEX(B$3:B$8,SMALL(IF(C$3:C$8=E$3,ROW(C$3:C$8)-ROW(C$3)+1),ROWS(G$3:G3))))

confirmado com CTRL + SHIFT + ENTER (pressionado juntos) e copiado para baixo conforme necessário

    
por 31.12.2011 / 16:28
0

Uma forma seria usar esta instrução IF = IF ($ E $ 3 = C3, B3, ""), que lhe daria o nome da pessoa se a Nacionalidade corresponder ao filtro ou um espaço em branco, se não corresponder.

    
por 29.12.2011 / 21:30
0

=If($E$3=English,B3,"")

Você pode tornar isso mais generalizado ao fazer:

=If($E$3=C3,B3,"")

    
por 29.12.2011 / 21:30