Retornando O NameS do campo de valor mais alto

0

Eu tenho vários produtos e tenho valor contra eles.

Eu usei min() para encontrar o menor valor e usei Index , match para obter o nome do produto correspondente. Mas tenho vários produtos que têm o mesmo valor.

Neste caso, o valor mínimo é 54 . Então, como eu obtenho todos os três nomes mapeados contra ele, por exemplo, ele deve mostrar Produto A , < em> Produto P , Produto Q contra 54.

No momento, ele está mostrando apenas o Produto P

    
por AMEYA VELAPURKAR 03.08.2017 / 13:11

3 respostas

1

Com dados como:

Insiraaseguintefunçãodefinidapelousuárioemummódulopadrão:

PublicFunctionFindAll(vAsVariant,rngAsRange)AsStringDimiAsLongary=rngFori=LBound(ary,1)ToUBound(ary,1)Ifv=ary(i,1)ThenFindAll=FindAll&"," & ary(i, 2)
    Next i
    FindAll = Mid(FindAll, 2)
End Function

Escolha uma célula, diga D7 e digite:

 =MIN(A:A)

e em C7 digite:

=findall(D7,A1:B25)

FunçõesDefinidaspeloUsuário(UDFs)sãomuitofáceisdeinstalareusar:

  1. ALT-F11exibeajaneladoVBE
  2. ALT-IALT-Mabreumnovomódulo
  3. coleomaterialefecheajaneladoVBE

Sevocêsalvarapastadetrabalho,aUDFserásalvacomela.SevocêestiverusandoumaversãodoExcelposteriora2003,deverásalvaroarquivocomo.xlsmemvezde.xlsx

PararemoveroUDF:

  1. abrirajaneladoVBEcomoacima
  2. limpeocódigo
  3. fecheajaneladoVBE

ParausaroUDFdoExcel:

=myfunction(A1)

Parasabermaissobremacrosemgeral,consulte:

link

e

link

e para detalhes sobre UDFs, consulte:

link

As macros devem estar ativadas para que isso funcione!

    
por 03.08.2017 / 14:10
1

Seu problema pode ser resolvido usando apenas funções já disponíveis no Excel. Usei este link e ajustei-o para o seu problema. Supondo que seus produtos estejam na coluna A e seus valores estejam na coluna B, use esta fórmula:

=IFERROR(INDEX($B$2:$B$20,SMALL(IF($A$2:$A$20=$E$3;ROW($A$2:$A$20)-1);ROW()-2));"")

Insira com ctrl + shift + enter (fórmula de matriz) e arraste para baixo para ver todas as suas ocorrências.

Como isso funciona? A função if primeiro verifica se o valor no intervalo de pesquisa é igual ao valor de pesquisa e, se for, retorna o índice desse valor. (Você tem que fazer row(..)-1 porque seus dados iniciam na linha 2. O row()-2 no final é garantir que você obtenha a primeira, segunda, ... ocorrência do mínimo à medida que você arrasta para baixo. O -2 é necessário porque sua fórmula virá na terceira linha da planilha.Eu finalmente agrupei tudo em uma função iferror para que somente os bons valores apareçam e nenhuma mensagem de erro.

    
por 03.08.2017 / 14:50
0

Várias abordagens não VBA:

Fórmula:

Com cabeçalhos na linha 1 e seus dados nas colunas A:B e =MIN(Product) em E3 :

F3: =IFERROR(INDEX(Value,AGGREGATE(15,6,1/1/(Product=$E$3)*ROW(Product),ROWS($1:1))-1),"")

Digitado normalmente e preencha até ver espaços em branco

VocêpodeclassificarosdadosemProdutoseusaroseguinteformatocondicional:

SupondoquesuatabelaclassificadacomeçaemO12comaprimeiralinhadedadosemO13

=O13=O12FormatAs:CustomNumberFormat:;;;

    
por 05.08.2017 / 21:10