Estou gerando um gráfico com dados aleatórios:

Date Value 1/1/2018 123 1/2/2018 453 

Eu usei RAND para gerar os valores, mas não quer que eles sejam recalculados o tempo todo. Como suprimir o recálculo de RAND?

Resposta

A resposta curta é “Você não pode” (pelo menos não sem script). No entanto, a menos que seu trabalho seja de natureza científica, você provavelmente não precisa de números “aleatórios”, apenas imprevisíveis . (Na verdade, para ser técnico, mesmo RAND não gera verdadeiros números aleatórios; em vez disso, ele usa um algoritmo complexo para … bem, gerar um número imprevisível .)

O problema, como você sabe, é que RAND recalcula. Mas podemos escrever qualquer número de fórmulas que produzirão números “pseudo-aleatórios” a partir da data. Por exemplo, supondo que suas datas estejam na Coluna A e seus “números aleatórios” na Coluna B, você pode colocar algo assim no B2 e copiar o quanto for necessário:

=VALUE(TEXT(INT(((A2*COS(DAY(A2))*PI())-INT(A2*COS(DAY(A2))*PI()))*1000)+IF(INT(((A2*COS(DAY(A2))*PI())-INT(A2*COS(DAY(A2))*PI()))*1000)<100,WEEKDAY(A2)*100,0),"000"))

Isso usará recursos da data para gerar um número” pseudo-aleatório “de 3 dígitos.

A fórmula excessivamente complicada não é tudo isso importante. Acabei de esmagar algumas funções matemáticas. Elas poderiam ser combinações infinitas de outras.

No entanto, se você só precisa de um número “único e não repetitivo”, por exemplo, como um gatilho para um plataforma como o Zapier – tudo que você realmente precisa é o formato numérico da própria data:

=VALUE(A2)

… copiado conforme necessário .

Qualquer fórmula pode funcionar como uma fórmula de matriz (ou seja, colocada em uma célula e preenchendo a coluna inteira) com pequenas alterações:

=ArrayFormula(IF(A2:A = "", "", VALUE(TEXT(INT(((A2:A*COS(DAY(A2:A))*PI())-INT(A2:A*COS(DAY(A2:A))*PI()))*1000)+IF(INT(((A2:A*COS(DAY(A2:A))*PI())-INT(A2:A*COS(DAY(A2:A))*PI()))*1000)<100,WEEKDAY(A2:A)*100,0),"000")))

=ArrayFormula(IF(A2:A = "", "", VALUE(A2:A))

Resposta

Com um google script

ferramentas> script edi tor

Em seguida, crie uma função. Você precisará conectar a função a um botão ou algum outro evento.

Para inserir o número, você precisa selecionar um intervalo. Em seguida, coloque o valor com e array de arrays. Pense nisso como uma matriz de linhas.

Aqui está meu exemplo de script do Google

function generateNumbers () { var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getSheets()[0]; var randNumberRows = [] var i; for (i = 0; i < 20; i++) { var row = [] row.push(randInt(-20,20)); row.push(randInt(-20,20)); row.push(randInt(-20,20)); randNumberRows.push(row); } var range = sheet.getRange("A2:C21"); range.setValues(randNumberRows); } function randInt(start, end) { // range is from start to end + 1 so it is inclusive r = end - start + 1 return Math.floor(Math.random() * r) + start; } 

Resposta

Eu estava examinando a mesma pergunta esta noite e encontrei este artigo: https://www.ssl.berkeley.edu/~mlampton/RandomSpreadsheet4.pdf

Você pode usar as fórmulas desse documento para criar seu próprio gerador de números pseudo-aleatórios em alguns minutos. Isso lhe dará uma lista de números aleatórios que só mudam quando você muda a semente.

Resposta

Eu tenho muito solução fácil e simples, duas pequenas soluções fáceis:

  • Também com o Excel: gere quantos números aleatórios quiser no Excel, copie e cole, pronto

  • Bloco de notas: gere no Planilhas Google, copie e cole no bloco de notas e copie e cole de volta, pronto

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *