作业帮 > 综合 > 作业

excel 想在一列单元格里产生一位字母加一位数字的随机数 怎么设计

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/17 04:44:32
excel 想在一列单元格里产生一位字母加一位数字的随机数 怎么设计
一共两位 每一位的取值范围都是从0-9和A-Z 比如:A8 BE 0F 这样的随机数
但要求每个数值都只出现一次
=CHAR(INT(RAND()*25+65))&INT(RAND()*9)
不能重复
=CHAR(COLUMN(A1)+64)&ROW(A1)-1公式下拉右拉
再问: 好像会有重复的值是吗? 另外忘了问一下 能让公式产生的值不再变化吗? 现在是只要一下拉 值全都变了 这个很重要 谢谢了~
再答: 如果要不重复出现,需要用两个单元格来做 至于一旦产生不再变化,要么用VBA代码,要么生成了数据后,用数值粘贴功能将公式清除用 用两个单元格的方法: A1公式:=MID("01234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ",INT(RAND()*36+1),1) B1公式:=MID(SUBSTITUTE("01234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ", A1, ""),INT(RAND()*35+1),1) 再用C1将A1、B1合成:=A1&B1 下拉产生了足够数据的随机数据后,选中所有数据,复制,再点击菜单:编辑-选择性粘贴-数值
再问: 两个单元格这种显示不合适 如果只是生成一次性数据这样当然没问题 但我要的一列数据是随时需要通过下拉单元格产生的 并且所有已生成的数据和新生成的数据不能有重复啊 不知道这样做不做的到
再答: 那么这个要求就非常复杂,只能用VBA来做了 Sub RNM() Dim Data_Count, i, r1, r2 Dim Data_Arr(36, 36) Data_Count = 20 ' 所需随机数据的个数 For i = 1 To Data_Count Do r1 = (Int(Rnd() * 36) + 1) ' 随机产生第一位字符 r2 = (Int(Rnd() * 36) + 1) ' 随机产生第二位字符 Loop While Data_Arr(r1, r2) = 1 ' 判断是否重复 Data_Arr(r1, r2) = 1 Cells(i, 1) = Mid("01234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ", r1, 1) & Mid("01234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ", r2, 1) Next i End Sub