在excel中,sheet1中2-150行是选择题,列abcde分别是题目、选项、答案等。

要求在sheet2中,实现随机不重复抽取100道题,即抽取100列。如何实现?注意2个问题,一是不重复抽取,二是每一行原abcd列要保持不变,也就是题目与对应的选项答案等要一一对应。

第1个回答  2013-10-30
在sheet1中的e列做个辅助列,在e2输入=INT(RAND()*149+1),e3中输入=IF(COUNTIF(E$2:E3,E3)>1,INT(RAND()*149),E3),然后把e3公式下拖到e100,在菜单栏选项选工具→选项→重新计算,把迭代计算勾上。然后在sheet2中a2中输入=INDIRECT("SHEET1!A"&Sheet1!E2),b2中输入=INDIRECT("SHEET1!b"&Sheet1!E2),c2中输入=INDIRECT("SHEET1!c"&Sheet1!E2),d2中输入-=INDIRECT("SHEET1!d"&Sheet1!E2),然后下拖到100行,出题时候就按F9刷新就会随机抽题了
第2个回答  2013-10-30

在sheet1里加一个辅助列,可以很简单的实现你的要求

详细见附件。


sheet1表G列是辅助列


本回答被网友采纳
第3个回答  2013-10-30
在新列中输入随机函数=RAND(),然后用新列作关键字排序,复制前101行到新表。
第4个回答  2013-10-30
随机抽取。不按顺序是吧。
可以用VBA来做。很简单,只是不知道你的表格是否保密。如果不保密可以发给我帮你做好程序。
[email protected]追问

vb ?我大学04年的时候还学过点vb呢 if random什么的 呵呵 这个是在excel里面,我发给你个表格试试,里面有100道题,你随机不重复抽取50道试试

追答

已回复邮件。

sub a()
Dim d As Object
Dim i%, r%
Set d = CreateObject("Scripting.Dictionary")
With Sheets(2)
.Cells.Clear
For i = 1 To 50 '这里是复制多条数据
    r = Int(Rnd * 99 + 2) '这里是随机数的范围
    If Not d.exists(r) Then
       Range("A" & r & ":E" & r).Copy IIf(.[a1] = "", .[a1], .[a65536].End(3).Offset(1))
       '这里是复制范围,可以改成a:f列
    End If
Next i
.Columns(1).ColumnWidth = 50  ’这里设置列宽
.Columns("B:E").ColumnWidth = 30  ’这里设置列宽
Set d = Nothing
End With
End Sub

答案也要的话,稍微改一下我的代码就可以了

本回答被提问者采纳
相似回答