Como posso evitar alterações nos resultados da fórmula após o primeiro uso?

0

Temos uma pasta de trabalho do Excel 2013 que usamos quando criamos novas contas de usuário (coluna A para o primeiro nome, coluna B para o sobrenome, coluna C para a senha, etc.).

First name      Last name       Password
John            Doe             #s$r28
Jane            Doe             #s$r29
Some            User            #s$r30

O formato do texto da senha é basicamente algo como # s $ r28 (esta coluna está usando texto estático). Quando criamos um novo usuário, usamos a alça de preenchimento no Excel 2013 para copiar a última linha da folha para a próxima linha, o que incrementa o conteúdo da célula da coluna de senha em 1 (um) para que a senha da coluna o novo usuário na linha recém-copiada se tornaria # s $ r29, e o próximo copiado acabaria sendo # s $ r30, e assim por diante. No entanto, esse método não é o que eu chamaria de prática recomendada e não gera uma senha realmente aleatória.

Eu posso gerar uma senha aleatória simplesmente usando uma fórmula como:

=RANDBETWEEN(0,9)&CHAR(RANDBETWEEN(65,90))&CHAR(RANDBETWEEN(97,122))&CHAR(RANDBETWEEN(33,47))

Mas meu problema é que qualquer atualização da planilha do Excel faz com que a fórmula seja disparada novamente e o Excel atualiza todas as senhas anteriores exibidas para a coluna de senha inteira. Tudo bem, tecnicamente, mas a pasta de trabalho é mantida para fins históricos e eu gostaria de criar uma senha aleatória que não é atualizada toda vez que uma linha é copiada. Eu pesquisei, mas não consegui resolver meu problema. Eu não acho que eu quero substituir o conteúdo da fórmula na nova célula com os resultados da fórmula (se é que isso é possível), porque ainda precisamos copiar isso para a próxima linha sempre que criarmos o próximo usuário ( então a célula da coluna de senha precisa permanecer como uma fórmula eu acho). Então, é possível ter uma fórmula apenas disparada quando uma linha é copiada para uma nova linha? Ou é possível criar uma fórmula no Excel que só dispara uma vez? Ou há alguma outra maneira que eu não estou vendo que possa funcionar?

Obrigado antecipadamente

    
por STGdb 23.04.2015 / 16:31

2 respostas

0

O próprio conceito de fórmulas é que elas disparam de novo e de novo. Você pode desativá-los ao corrigir seus valores apenas. Se você quiser um valor fixo, pode recorrer ao uso do VBA.  Eu adicionaria um Sub que cria a senha quando você a chama assim:

Sub ertdfgcvb(Target As Range)
For Each Cell In Target
    Cell.Formula = "=RANDBETWEEN(0,9)&CHAR(RANDBETWEEN(65,90))&CHAR(RANDBETWEEN(97,122))&CHAR(RANDBETWEEN(33,47))"
    Cell.Value2 = Cell.Value2
Next
End Sub
    
por 23.04.2015 / 16:44
2

Calcule uma vez, copie o intervalo de fórmulas, em seguida, Colar Especial (clique com o botão direito do mouse, então S ) os Valores somente de volta ao intervalo. Isso substitui as fórmulas por seus resultados e impede que as senhas aleatórias sejam recalculadas.

    
por 23.04.2015 / 16:48