0

我试图让 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

请参阅上面的公式。

预期结果类似于:aaa1111aaa11。我不希望公式允许像11aaaa,aaaaaa1234aa.

4

2 回答 2

1

您可以考虑以下选项:

在此处输入图像描述

中的公式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
于 2019-07-10T19:22:52.753 回答
1

我可以提供这个相当长的数组公式:

=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 表格中对其进行测试,因为我只有一个没有数组连接功能的旧版本 Excel - 如果您删除 ArrayFormula 包装器并使用 Ctrl-Shift-Enter 输入它,它应该可以在更高版本的 Excel 中工作。

这个想法是,只有 20 种方法可以从 6 个项目(字母和数字)中选择 3 个项目(字母),因此选择其中一个以二进制形式(例如 010101)并在有 1 的地方生成字母,在有 0 的地方生成数字。

在此处输入图像描述

编辑

通过 Excel 2019 确认工作,通过以下方式确认CtrlShiftEnter

在此处输入图像描述

于 2019-07-10T22:36:18.590 回答