Eu quero criar uma seqüência aleatória com comprimento aleatório do alfabeto no Excel. Por exemplo, "jlskdjf", "kjlk", "kljsodif" etc. etc. Como posso fazer isso?
fonte
Eu quero criar uma seqüência aleatória com comprimento aleatório do alfabeto no Excel. Por exemplo, "jlskdjf", "kjlk", "kljsodif" etc. etc. Como posso fazer isso?
Suponha que você queira gerar uma sequência de comprimento aleatório (de 1 a 8 caracteres) a partir de alfabetos em minúsculas (az).
=LEFT( CHAR(RAND()*26+97) & CHAR(RAND()*26+97) &
CHAR(RAND()*26+97) & CHAR(RAND()*26+97) &
CHAR(RAND()*26+97) & CHAR(RAND()*26+97) &
CHAR(RAND()*26+97) & CHAR(RAND()*26+97),
RAND()*8+1)
Cada um CHAR(...)
gera 1 alfabeto minúsculo aleatório.
Para usar letras maiúsculas (AZ) em vez de letras minúsculas, você pode substituir CHAR(RAND()*26+97)
por CHAR(RAND()*26+65)
. Como o código ASCII de AZ é 65-90 e o código ASCII de az é 97-122.
Para simplesmente a fórmula, você pode usar RANDBETWEEN()
de ferramentas de análise para substituir RAND()*xx+yy
.
Suponha que você queira gerar uma sequência de comprimento aleatório (de 1 a 8 caracteres) a partir de caracteres específicos.
Você pode inserir os caracteres desejados na célula A1 , por exemplo:
abcdefghijklmnopqrstuvwxyz1234567890!@#$%^&*()
Então,
=LEFT( MID($A$1,RAND()*LEN($A$1)+1,1) & MID($A$1,RAND()*LEN($A$1)+1,1) &
MID($A$1,RAND()*LEN($A$1)+1,1) & MID($A$1,RAND()*LEN($A$1)+1,1) &
MID($A$1,RAND()*LEN($A$1)+1,1) & MID($A$1,RAND()*LEN($A$1)+1,1) &
MID($A$1,RAND()*LEN($A$1)+1,1) & MID($A$1,RAND()*LEN($A$1)+1,1),
RAND()*8+1)
Cada um MID(...)
recebe 1 caractere aleatório de A1.
Hmm. Seria muito fácil com o VBA criar uma função para fazê-lo. Com fórmulas é um pouco mais envolvido.
=CHAR(RANDBETWEEN(97,122))
obviamente, dá-lhe uma letra. Então coloque dez deles na coluna A.=A1
célula B1.=B1&A2
B2 e preencha B2: B10. (CONCATENATE não aceita intervalos, irritantemente.)=OFFSET(B1,RANDBETWEEN(0,9),0)
.Pode haver uma maneira mais fácil, com fórmulas de matriz ou algo assim.
INDEX(B1:B10,RANDBETWEEN(1,10))
Como fórmula para um único caractere, você pode usar este
Basta procurar em qualquer tabela ACSII para selecionar o intervalo de rand desejado.
Mas o tamanho aleatório é complicado, não por causa do tamanho aleatório, mas por causa dos caracteres aleatórios que você deseja montar. Caso contrário, você poderia apenas a função REPT associada à função RAND e à fórmula acima.
Mas, para ajustar o resultado descrito, eu usaria este código:
Se houver uma solução para fazer esse código com fórmulas, portanto, sem o VBA, eu gostaria muito de saber sobre isso :)
fonte
=LEFT(CHAR(RANDBETWEEN(97,122))&CHAR(RANDBETWEEN(97,122))&... repeat as many times as needed, RANDBETWEEN(minimum length, maximum length))
fonte
Esta fórmula não requer uma célula com "abc ... ABC ... 012"
1 caracter aleatório de [a-zA-Z0-9].
Se mais caracteres forem necessários, copie CHAR (...) e separe-os com &.
Esta solução é da Oaktree http://www.mrexcel.com/forum/excel-questions/332116-generate-random-alphanumeric-code.html
fonte
(Se você deseja strings somente para letras, consulte o parágrafo adicionado abaixo)
Gere uma sequência aleatória de letras maiúsculas e dígitos de comprimento aleatório entre 8 e 12:
=MID(BASE(RAND()*10^18,36,12),1,RAND()*4+8)
Explicação:
BASE(RAND()*10^18,36,12)
. O truque é gerar um grande número aleatório e convertê-lo na base 36, obtendo algo que efetivamente se parece com uma string.RAND()*4+8
Funções usadas na fórmula (de dentro para fora):
RAND()
Retorna um número aleatório entre 0 e 1.BASE(Number; Radix; [MinimumLength])
Converte um número inteiro positivo em uma base especificada em um texto do sistema de numeração. Os dígitos 0-9 e as letras AZ são usadas.MID("Text"; Start; Number)
Retorna uma sequência de texto de um texto. Os parâmetros especificam a posição inicial e o número de caracteres.O número
10^18
é um número mágico para o qual a sequência gerada não possui zeros à direita ou à direita. Se você precisar criar uma string mais longa, sugiro criar duas ou mais dessas strings e concatená-las.Nota: esta solução foi testada no LibreOffice Calc 5, mas também deve funcionar no Microsoft Excel, pois as funções são as mesmas da documentação (que não posso vincular porque não tenho reputação suficiente).
Resposta editada
Como foi apontado em um comentário que o OP solicitou especificamente apenas cartas, lançarei esta versão alternativa em:
=MID(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(BASE(RAND()*10^22,36,16),"0",""),"1",""),"2",""),"3",""),"4",""),"5",""),"6",""),"7",""),"8",""),"9",""),1,RAND()*4+8)
onde você substitui todas as ocorrências de dígitos por cadeias vazias. Dessa forma, você obtém apenas letras (maiúsculas). Ajustei os números mágicos para contar a possibilidade de que a sequência aleatória inicial tenha muitos dígitos. Não é à prova de falhas, embora no sentido de que, em princípio, você possa obter seqüências mais curtas do que o esperado.
Se você precisa ter certeza do tamanho mínimo, então você tem essa outra alternativa (ainda mais complicada):
=MID(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(BASE(RAND()*10^22,36,16),"0",CHAR(RANDBETWEEN(65,90))),"1",CHAR(RANDBETWEEN(65,90))),"2",CHAR(RANDBETWEEN(65,90))),"3",CHAR(RANDBETWEEN(65,90))),"4",CHAR(RANDBETWEEN(65,90))),"5",CHAR(RANDBETWEEN(65,90))),"6",CHAR(RANDBETWEEN(65,90))),"7",CHAR(RANDBETWEEN(65,90))),"8",CHAR(RANDBETWEEN(65,90))),"9",CHAR(RANDBETWEEN(65,90))),1,RAND()*4+8)
onde você substitui cada dígito por uma letra maiúscula gerada aleatoriamente.
Devo dizer que o que gostei da solução inicial em relação às fornecidas nas outras respostas é que é conciso e relativamente simples de entender. As duas alternativas perdem essas propriedades.
fonte
Para gerar caracteres aleatórios:
Na célula B1
= CHAR (RANDBETWEEN (48.131)) (ou qualquer conjunto de caracteres que você desejar)
Preencha isso com o número de colunas = máximo de caracteres necessários em sua string
Para gerar comprimento aleatório
Na célula A1
= ESQUERDA (CONCATENAR (B1, C1, D1, E1, F1, G1, H1, I1, J1, K1), RANDBETWEEN (0,9))
Para gerar seqüências aleatórias
Preencha a tabela inteira na coluna A1
fonte