Critério de pesquisa único vários resultados

0

Eu preciso mostrar os resultados de uma coluna de dados classificados com apenas um único critério de pesquisa. Por vezes, existem várias ocorrências para o mesmo critério. LOOKUP encontra apenas a primeira ocorrência. Eu preciso de entrada em uma célula celular para corresponder é em J8: J581 e os dados correspondentes a serem exibidos é N8: N581

J   K L M N
bob       RED
bob       BLUE
Bob       Green
Sue       yellow
Sue       white
fred      grey
pete      brown

.

input=bob
output=    bob  RED
                BLUE
                Green
    
por Paul 06.06.2013 / 16:43

2 respostas

1

Se você estiver simplesmente procurando retornar linhas como a amostra acima, use uma tabela do Excel.

  1. Selecione seus dados
  2. Crie uma tabela Insert>Tables>Table (marque a caixa Minha tabela tem cabeçalhos)
  3. Uma vez que a tabela foi criada, basta escolher o botão do filtro (seta para baixo na linha Table Header) e escolher o valor do filtro (por exemplo, na amostra, escolha Bob), isso retornará apenas as linhas "Bob". li>

Aqui está uma imagem anterior:

Edepois:

EDITAR: Com base em suas informações adicionais, eu consideraria adicionar uma tabela dinâmica com base na sua tabela de dados. Isso permitirá que você crie uma visualização "resumida" de suas informações para ver melhor quais áreas de acampamento têm apenas um ID e vários IDs. Seria algo parecido com isto:

Alémdisso,para@pnutsnote,oExcelélimitadoa10.000itensemumalistasuspensa(ouseja,filtro),masnãohálimitedocumentadoparaosmembrosdatabela.Eutivetabelascom10.000linhas.

EDIT2:Sevocêquiserencontrarfacilmenteapenasvaloresrepetidos,umaTabelaDinâmicaéabsolutamenteocaminhoapercorrer.

  1. Peguesuatabeladedadosinicialeadicioneumalinha"contador". =IF([@Name]=D1,F1+1,1) Isso retornará uma contagem de quantas linhas têm o mesmo nome.
  2. Crie uma tabela dinâmica Insert>Tables>Pivot Table dos seus dados.
  3. Formate sua tabela dinâmica da seguinte forma:
    • Rótulos de linha = Name , Code , Counter e desativar sub-totais e totais gerais para todos os valores.
    • Filtrar Contador = Limpar 1, isso mostrará apenas Nomes com vários valores.
    • Nome do filtro = qualquer nome de acampamento específico que você esteja interessado.

    
por 06.06.2013 / 18:42
0

Digamos que sua célula de entrada seja A1 e suas células de saída sejam A3 para o nome e B3: B .. para o intervalo de saída (com o fim do intervalo B diminuindo até o número máximo de resultados que você espera para ver).

Para A3, coloque a fórmula =A1 .

Para B3, coloque a fórmula

  =IFERROR(INDEX($N$1:$N$99,SMALL(IF($J$1:$J$99=$A$3,ROW($N$1:$N$99)-ROW($N$1)+1),ROWS($N$1:$N1))),"")

Esta é uma fórmula de matriz e precisa ser inserida com a combinação de teclas Controle - Shift - Enter . Você pode copiá-lo para a parte inferior do seu intervalo de saída.

Observe que a fórmula é codificada para uma lista de entrada com um máximo de 99 linhas. Você pode mudar isso para o tamanho que precisar. Embora seja possível fazer referência à coluna inteira (J: J e N: N), haverá um impacto no desempenho que você provavelmente desejará evitar.

Como a fórmula funciona

Trabalhando de dentro para fora, a fórmula primeiro compara o nome no qual a pesquisa deve ser executada (célula A3) com a lista completa de nomes (até 99 nomes no intervalo J1: J99). Essa comparação é mostrada na linha 6 da quebra de função mostrada abaixo.

O produto dessa comparação é uma matriz com valores True para uma correspondência e valores False para uma não correspondência, por exemplo, {Falso, Falso, Falso, Falso, Verdadeiro, Verdadeiro, Falso, etc. etc.}.

Em seguida, é feita uma comparação entre esse array com um array que pode ser considerado como os "números de linha" da lista de nomes: {1, 2, 3, 4, 5, 6, ... 99} . Essa comparação é feita pela instrução IF nas linhas 6-8 do gráfico de fórmulas.

A comparação é elemento a elemento. Se um elemento da matriz de comparação de nomes for igual a True, o IF retornará seu número de linha correspondente; se o elemento for igual a False, o IF retornará FALSE. Usando os dois arrays de exemplo acima, o resultado da instrução IF seria {False, False, False, False, 4, 5, False, ...}.

Continuando,afunçãoSMALL(iniciandonalinha8doesquemadefunções)éusadaparaobteromenorelementokthdestenovoarraydoIF.O"k" neste caso é fornecido pela expressão ROWS ($ N $ 1: $ N1), que simplesmente contará de 1 a 99 quando a fórmula inteira for copiada da linha 1 até a linha 99 (ROWS ($ N $ 1) : $ N1) = 1, ROWS ($ N $ 1: $ N2) = 2, e assim por diante).

Portanto, o SMALL primeiro encontrará o menor elemento do array produzido pelo IF, ignorando os elementos que são False. Em outras palavras, ele retornará o número da primeira linha em que o nome que está sendo comparado corresponde a um nome na lista de nomes de pesquisa. Em nosso exemplo, esse é o número 4, conforme mostrado na sexta coluna da tabela abaixo.

A etapa de finalização usa INDEX nos valores de pesquisa para buscar o elemento correspondente ao número da linha que foi calculado. Nesse caso, o quarto item no exemplo da lista de cores da pergunta é "amarelo". (O IFERROR garante que um espaço em branco seja mostrado quando a fórmula não conseguir encontrar uma correspondência.)

Esse foi o resultado produzido pela primeira cópia da fórmula completa. Quando é copiado para a próxima célula, a única coisa que muda no cálculo é o valor de "k" para a função SMALL, que avança para 2. E o segundo menor número de linha que foi encontrado é 5, o que produz o valor "branco".

    
por 06.06.2013 / 23:55