Есть ли способ генерировать пароли TeamViewer в Excel? - PullRequest
0 голосов
/ 10 июля 2019

Я пытаюсь заставить Excel сгенерировать 6-символьную строку пароля, точно так же, как TeamViewer (3 буквы, 3 цифры).Есть ли какая-то функция, о которой я мог не знать?

Я пробовал =CHOOSE(RANDBETWEEN(1,2),CHAR(RANDBETWEEN(0,9)),CHAR(RANDBETWEEN(97,122)))&CHOOSE(RANDBETWEEN(1,2),CHAR(RANDBETWEEN(0,9)),CHAR(RANDBETWEEN(97,122)))&CHOOSE(RANDBETWEEN(1,2),CHAR(RANDBETWEEN(0,9)),CHAR(RANDBETWEEN(97,122)))&CHOOSE(RANDBETWEEN(1,2),CHAR(RANDBETWEEN(0,9)),CHAR(RANDBETWEEN(97,122)))&CHOOSE(RANDBETWEEN(1,2),CHAR(RANDBETWEEN(0,9)),CHAR(RANDBETWEEN(97,122)))&CHOOSE(RANDBETWEEN(1,2),CHAR(RANDBETWEEN(0,9)),CHAR(RANDBETWEEN(97,122))), и вот пример одного из результатов: ckjfs.

См. Формулу выше.

Ожидаемый результат примерно такой: aaa111 или 1aaa11.Я не хочу, чтобы Формула позволяла что-то вроде 11aaaa, aaaaaa или 1234aa.

Ответы [ 2 ]

1 голос
/ 11 июля 2019

Я могу предложить эту довольно длинную формулу массива:

=ArrayFormula(TEXTJOIN("",TRUE,IF(MID(TEXT(DEC2BIN(INDEX({7,11,13,14,19,21,22,25,26,28,35,37,38,41,42,44,49,50,52,56},RANDBETWEEN(1,20))),"000000"),{1,2,3,4,5,6},1)="0",
CHAR(CHOOSE({1,2,3,4,5,6},RANDBETWEEN(48,57),RANDBETWEEN(48,57),RANDBETWEEN(48,57),RANDBETWEEN(48,57),RANDBETWEEN(48,57),RANDBETWEEN(48,57))),
CHAR(CHOOSE({1,2,3,4,5,6},RANDBETWEEN(97,122),RANDBETWEEN(97,122),RANDBETWEEN(97,122),RANDBETWEEN(97,122),RANDBETWEEN(97,122),RANDBETWEEN(97,122))))))

Мне пришлось протестировать его в Google Sheets, потому что у меня есть только старая версия Excel без функций конкатенации массивов - она ​​должна работать в более поздних версиях Excel, если вы удалите оболочку ArrayFormula и введете ее с помощью Ctrl-Shift-Enter.

Идея состоит в том, что есть только 20 способов выбрать 3 элемента (буквы) из 6 (буквы и цифры), поэтому выберите один из них в двоичном виде (например, 010101) и генерируйте буквы там, где есть 1, и цифры, где есть 0 '.

enter image description here

EDIT

Подтверждена работа через Excel 2019, подтверждено с помощью Ctrl Shift Введите :

enter image description here

1 голос
/ 10 июля 2019

Вот вариант для рассмотрения:

enter image description here

Формула в A2:

=RANDBETWEEN(1,6)

Формула вB2:

=CHAR(RANDBETWEEN(IF(OR(RANK.EQ(A2,$A$2:$A$7)+COUNTIF($A$2:A2,A2)-1={1,2,3}),48,97),IF(OR(RANK.EQ(A2,$A$2:$A$7)+COUNTIF($A$2:A2,A2)-1={1,2,3}),57,122)))

Перетащите вниз .....

Формула в D2:

Excel 2016 с CONCAT:

=CONCAT(C2:C7)

Нижние версии без CONCAT:

=C2&C3&C4&C5&C6&C7
...