Outra expressão possível:
=INDEX(A1:A30,INDEX(LARGE((B1:B30="Approved")*ROW(A1:A30),ROW(A1:A30)),1+INT(RAND()*COUNTIF(B1:B30,"Approved"))))
Ele assume que o ID está em A1:A30
,
e o status está em B1:B30
.
Estou tentando obter uma fórmula que gere um valor aleatório com base em uma condição definida. Como eu posso não estar explicando isso corretamente, aqui está o meu exemplo:
Eu tenho uma coluna A que contém números de ID. Eu tenho uma coluna B que contém vários status (aprovado, negado, etc.) Em uma determinada célula em outra planilha, gostaria de gerar um número de aplicativo aleatório da coluna A que tem um status correspondente "Aprovado" na coluna B. I tentei várias técnicas de usar as combinações INDEX e RANDBETWEEN, mas não consigo chegar ao que eu preciso. Qualquer ajuda é muito apreciada.
Esta fórmula filtrará o "Aprovado" e, em seguida, escolherá aleatoriamente um para retornar:
=INDEX(A:A,AGGREGATE(15,6,ROW($B$1:INDEX(B:B,MATCH("zzz",B:B)))/($B$1:INDEX(B:B,MATCH("zzz",B:B))="Approved"),RANDBETWEEN(1,COUNTIF(B:B,"Approved"))))
Nota:
Ele é volátil e sempre que o Excel calcula, ele também é recalculado. Você pode ver isso pressionando F9, o que força o Excel a calcular novamente.