生成随机测试数据(Microsoft Excel)
当您开发供其他人使用的工作表时,应测试这些工作表以确保它们能够按预期工作。
对于包含复杂公式或将用于关键目的的工作表,尤其如此。测试工作表的概念意味着您将需要生成某种数据以用于测试工作表。
有关将软件测试套件组合在一起的全部书籍已经撰写完毕。编译测试数据的严格程度在很大程度上取决于受众的需求和工作表的性质。
不幸的是,没有快速的解决方案可以自动找出您需要什么并为您生成数据。但是,您可以在Excel中使用一些工具来实现此目的。
首先,如果需要生成随机数值,则可以使用RAND或RANDBETWEEN工作表函数。区别在于RAND会生成介于0和1之间的值,而RANDBETWEEN会在您设置的任何界限之间生成整数值。
但是,随机数据可能不适合您的测试需求。当您测试公式的边界时,尤其如此。
例如,使用大值,小值或大,小值的组合进行测试。同样,您可能需要测试不适当的值,例如使用文本作为输入而不是数字(反之亦然)。您需要仔细考虑所有条件,然后选择适合您需要的数据类型。
如果愿意,可以使用宏来生成测试数据。下面的宏使用您设置的任何边界(最小和最大)之间的随机数值填充选定范围的单元格。
Sub RandNums() Dim MyRange As Range Dim lMin As Long, lMax As Long Dim dRand As Double ' If selection is not Excel Range If TypeName(Selection) <> "Range" Then Exit Sub Set MyRange = Selection ' Get Min and Max value lMin = CLng(InputBox("Minimum?")) lMax = CLng(InputBox("Maximum?")) Randomize Application.ScreenUpdating = False For Each c In MyRange.Cells ' Calculate random value, where ' Value >= Min And Value <= Max dRand = Rnd * (lMax - lMin) + lMin ' Use the following line only if the random ' value should be an integer ' dRand = Int(dRand) c.Value = dRand Next c Application.ScreenUpdating = True End Sub
若要使用宏,只需选择要包含随机数值的单元格范围,然后运行宏。如果必须在单元格中使用整数值,则可以“取消注释”宏中的注释行。
如果要使用随机日期填充单元格区域,则对RandNums宏进行一些修改即可得到以下结果。
Sub RandDates() Dim MyRange As Range Dim dtMin As Date, dtMax As Date Dim dtRand As Date ' If selection is not Excel Range If TypeName(Selection) <> "Range" Then Exit Sub Set MyRange = Selection ' Get Min and Max value ' From: 1/1/1990 (put your start Date) dtMin = #1/1/1990# ' To: Today dtMax = Date Randomize Application.ScreenUpdating = False For Each c In MyRange.Cells ' Calculate random value, where ' Value >= Min And Value <= Max dtRand = Rnd * (dtMax - dtMin) + dtMin dtRand = Int(dtRand) c.Value = dtRand ' Change format for cell, below, as desired c.NumberFormat = "m/d/yyyy" Next c Application.ScreenUpdating = True End Sub
同样,只需选择一个范围,然后运行宏。您可以修改设置为dtMin和dtMax变量的初始值,以便为所需日期指定边界。如果需要,还可以在将随机日期存储在单元格中之后更改应用于单元格的格式。
注意:
如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。
_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。
本技巧(2077)适用于Microsoft Excel 97、2000、2002和2003。可以在以下功能区中为Excel的功能区界面(Excel 2007及更高版本)找到本技巧的版本: