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