Como faço uma seleção aleatória em uma planilha usando mais de um critério?

3

Eu tenho uma planilha criada no OpenOffice (V3.3.0 no Windows 7 32 bits) que eu uso como um banco de dados da minha coleção de DVD. Depois de fazer uma pergunta no SuperUser , eu tenho isso para que pode aparecer um título aleatório da minha coleção nas vezes em que não consigo decidir o que assistir. Ele usa a seguinte fórmula:

=INDIRECT("A"&RANDBETWEEN(2;COUNTA(A1:A1048576)))

Isso seleciona um valor aleatório entre o início e o fim dos meus DVDs e exibe o nome. Isso funciona bem, mas agora quero expandi-lo para torná-lo um pouco mais sofisticado.

Sempre que vejo um DVD, marquei a data em uma coluna na planilha. Agora quero que a seleção aleatória escolha uma que não vi nos últimos seis meses.

Eu posso expandir isso no futuro para, por exemplo, selecionar um item aleatório que eu não vi nos últimos 6 meses E é uma comédia (eu também tenho uma coluna do gênero do filme).

Quaisquer sugestões sobre como fazer isso serão recebidas com gratidão.

    
por andygrunt 15.08.2011 / 17:26

2 respostas

2

Agora você precisa adicionar outra coluna contendo a data da última vez que assistiu a esse filme, além do gênero. Eu não sei como automatizar isso acima da minha cabeça, mas você pode continuar a calcular a fórmula até que uma seleção aleatória seja encontrada.

O que você precisa fazer é adicionar algumas cláusulas IF para ver se o filme selecionado corresponde ao gênero desejado e se a data da última reprodução excede uma determinada data a partir de agora.

Para fazer isso, o que eu faria é inserir meus critérios em algumas células e armazenar a localização de uma célula aleatória em outra. Então, você pode fazer algo como:

=IF((Last Watched - Today) > 6 Months, IF(Genre = Selected Genre, TITLE))

Para obter esses valores, você pode usar a função OFFSET para compensar seu INDIRECT por uma determinada quantidade de linhas / colunas. Basicamente, você substituiria os valores que eu coloquei nessa fórmula com um novo valor OFFSET . A única ressalva para este método é que você não tem a garantia de obter um título a cada vez - você pode ter que continuar a calcular a célula aleatória até encontrar uma que corresponda aos seus critérios (não sei como automatizar isso o topo da minha cabeça sem macros).

Apenas para mais detalhes, digamos que você coloque a célula aleatória contendo o título de um DVD na célula A1 . Você pode substituir o TITLE na fórmula anterior por INDIRECT(A1) . Se o gênero estiver na coluna ao lado, substitua-o por OFFSET(INDIRECT(A1), 0, 1) . Você pode então atualizar apenas o valor aleatório na célula A1 e ele corresponderá automaticamente aos seus critérios. Além disso, você pode definir seus critérios em várias células estáticas, para que você possa atualizá-los on-the-fly também.

    
por 15.08.2011 / 17:40
0
  1. Primeiro, filtre a lista de DVDs em uma lista menor de "Não assisti por um tempo", usando condições semelhantes às sugeridas por Breaththrough: algo como =FILTER(A1:A1048576, (Last Watched - Today) > 6 Months, (Genre = Selected Genre, TITLE))
  2. Em seguida, aplique sua função de seletor aleatório existente - =INDIRECT("B"&RANDBETWEEN(2;COUNTA(B1:B1048576))) , alterada para a coluna B (a nova lista filtrada) - para encontrar apenas um filme para assistir.
por 13.05.2015 / 03:58