Ir ao conteúdo
  • Cadastre-se

Formar uma lista aleatória com palavras pré selecionadas


Ir à solução Resolvido por Visitante,

Posts recomendados

Na planilha eu tenho duas palavras pré selecionadas MAIOR e MENOR.

 

Tenho uma lista com 10 linhas. Acima tem um número, no caso 7.

 

Nessa lista de 10 linhas deve aparecer 7 vezes a palavra Maior de forma aleatória, as outras 3 linhas devem aparecer Menor.

 

Segue o exemplo

 

 

 

Obrigada!

Planilha 1.xlsx

Link para o comentário
Compartilhar em outros sites

Se quiser experimentar esta solução utilizando macros.
Instale o código abaixo em um módulo comum.

Sub Maior7Menor3() Dim c As Range, i As Long Range("C2:C11").ClearContents  Do While Application.CountIf(Range("C2:C11"), "MENOR") < 3   i = Int(Rnd() * 10) + 2   If Cells(i, 3) = "" Then Cells(i, 3) = "MENOR"  Loop  For Each c In Range("C2:C11")   If c.Value = "" Then c.Value = "MAIOR"  Next cEnd Sub
Link para o comentário
Compartilhar em outros sites

Boa noite, Osvaldo

 

Obrigada pela solução...

 

A ideia é que esse número 7 (valor da célula D1) seja rotativo, ou seja, uma hora ele pode ser 6 Maior e 4 Menor, 8 Maior e  2 Menor... o que eu teria que mudar neste código para atender a essa rotatividade...

 

Obrigada!

Link para o comentário
Compartilhar em outros sites

Boa tarde Osvaldo,

 

Só mais uma questão! Neste exemplo que te passei nós temos um número de linhas fixo na tabela que é 10. Gostaria de colar uma variável aí... ora vai ser 7 linhas, ora vai ser 9 linhas, ora vai ser linha 15 linhas... com um limite de 20 linhas, supondo. Então quando for 7 linhas, apareceria a palavra maior/menor que está indicado na célula D1, e as demais linhas ficassem apagadas. Como fazer para essas linhas apagarem?

Link para o comentário
Compartilhar em outros sites

  • Solução

Olá, Diclas.

Coloque em "D4" a qtde desejada de linhas.

Sub Maior7Menor3() Dim c As Range, i As Long Range("C:C").ClearContents If [D4] < [D1] Or [D4] > 20 Then _  MsgBox "D4 não pode ser menor do que D1, nem D4 maior do que 20": Exit Sub  Do While Application.CountIf(Range("C:C"), "MENOR") < [D4] - [D1]   i = Int(Rnd() * [D4]) + 2   If Cells(i, 3) = "" Then Cells(i, 3) = "MENOR"  Loop  For Each c In Range("C2:C" & [D4] + 1)   If c.Value = "" Then c.Value = "MAIOR"  Next cEnd Sub
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...