Aqui está um exemplo dos meus dados:
Name: Office: Years:
John Smith Canada 1
Bob Smith Canada 1
Jake Smith Canada 1
Sarah Smith Canada 1
Em outra planilha, quero gerar um nome aleatório com base no cargo e nos anos. À medida que arrasto a fórmula para baixo, quero que ela dê um nome diferente a cada vez (é aqui que estou preso). Eu tentei várias fórmulas e esta é a mais próxima.
=INDEX($B$2:$B$436,MATCH(SMALL(IF($D$2:$D$436&$F$2:$F$436=$H$3&$I$3,$G$2:$G$436),1),$G$2:$G$436,0))
Coluna B = Nome Coluna D = Escritório Coluna F = Anos então H3 e I3 são meus valores de pesquisa
coluna G é um conjunto de números aleatórios = Rand()
Responder1
Vou colocar a randomização na própria fórmula. Você sempre pode colocar isso em outra coluna, se quiser.
A coluna A é o nome
A coluna B é o escritório
A coluna C é o ano
Cell G2 é o escritório em que você está interessado
Cell G3 é o ano em que você está interessado
=INDIRECT("A"&LARGE(IF($B$2:$B$7=G2,IF($C$2:$C$7=G3,ROW($A$2:$A$7),0),0), RANDBETWEEN(1,COUNTIFS(B:B,G2,C:C,G3))))
Esta é uma fórmula de matriz e precisa ser inserida usando Ctrl+ Shift+ Enter.
Ele funciona criando uma matriz que contém os números das linhas (se os critérios corresponderem) ou zero se não corresponderem. Então leva ono maior valor, ondené um número aleatório entre 1 e o número de linhas que correspondem aos critérios.
Responder2
Supondo que você queira retornar nomes em A2 para baixo (onde A1 é um cabeçalho ou espaço em branco), use esta fórmula de matriz em A2
=INDEX($B$2:$B$436,SMALL(IF(($D$2:$D$436=$H$3)*($F$2:$F$436=$I$3)*(COUNTIF(A$1:A1,$B$2:$B$436)=0),ROW($B$2:$B$436)-ROW($B$2)+1),RANDBETWEEN(1,SUM(($D$2:$D$436=$H$3)*($F$2:$F$436=$I$3)*(COUNTIF(A$1:A1,$B$2:$B$436)=0)))))
confirme com CTRL+ SHIFT+ CTRLe copie - altere o A$1:A1
intervalo nas COUNTIF
funções para corresponder à célula acima da célula inicial.
Nota: - você não precisa de uma coluna de números aleatórios com este método