У нас есть книга Excel 2013, которую мы используем при создании новых учетных записей пользователей (столбец A для имени, столбец B для фамилии, столбец C для пароля и т.д.).

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

Формат текста пароля в основном похож на # s $ r28 (этот столбец в настоящее время использует статический текст). Когда мы создаем нового пользователя, мы используем дескриптор заполнения в Excel 2013, чтобы скопировать последнюю строку на листе до следующей строки, что увеличивает содержимое ячейки для столбца пароля на 1 (один), так что пароль для новый пользователь во вновь скопированной строке станет # s $ r29, а затем следующий скопированный получит # s $ r30 и так далее. Однако этот метод не является тем, что я бы назвал лучшей практикой, и не генерирует действительно случайный пароль.

Я могу сгенерировать случайный пароль, просто используя формулу, например:

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

Но моя проблема в том, что при любом обновлении листа Excel формула снова запускается, и Excel обновляет все предыдущие пароли, которые отображались для всего столбца паролей. Технически это нормально, но книга хранится в исторических целях, и я хотел бы создать случайный пароль, который не обновляется при каждом копировании строки. Я искал, но не смог решить мою проблему. Я не думаю, что хочу заменить содержимое формулы в новой ячейке результатами формулы (если это вообще возможно), потому что нам все еще нужно копировать это в следующую строку всякий раз, когда мы создаем следующего пользователя ( поэтому ячейка столбца пароля должна оставаться формулой, я думаю). Так можно ли вообще запускать формулу только при копировании строки в новую? Или можно создать формулу в Excel, которая срабатывает только один раз? Или есть какой-то другой способ, которым я просто не вижу, который может сработать?

заранее спасибо

2 ответа2

2

Вычислите один раз, скопируйте диапазон формул, затем вставьте специальные (щелчок правой кнопкой мыши, затем S) значения только обратно в диапазон. Это заменит формулы с их результатами и предотвратит пересчет случайных паролей.

0

Само понятие формул состоит в том, что они стреляют снова и снова. Вы можете отключить их, исправив только их значения. Если вы хотите получить фиксированное значение, вы можете использовать VBA. Я бы добавил Sub, который создает пароль при вызове, например так:

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .