我试图让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
之类的东西。
答案 0 :(得分: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
中的公式:
带有CONCAT
的Excel 2016:
=CONCAT(C2:C7)
没有CONCAT
的较低版本:
=C2&C3&C4&C5&C6&C7
答案 1 :(得分: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工作,通过 Ctrl Shift Enter 确认: