从Office 2013中的电子表格和模板生成随机测试


0

我要完成的任务是在Excel中保留项目库,其中包含该项目的文本,正确答案,该项目的标记以指示其要测量的内容以及所基于的材料。

有了这些数据,我如何在Word中创建一个模板,该模板将允许我从项目库中查询满足某些条件的随机项目?

能够设计一堆项目并创建一个模板非常好,这样无论何时我想进行“新鲜”测验,我都可以刷新或单击其他一些简单的按钮序列。

我将在Office中使用哪些工具来完成此任务?


1
使用Access作为“项目库”,因为它用于数据库,而Excel用于电子表格。
2013年

Answers:


0

这是一种不使用任何VBA的方法。假设您使用的是Windows Word(在Mac Word上将无法使用),并且

  • 您在文档中需要的项目数是固定的(即不会随机变化)
  • 您的“项目库”是表格Excel表格,即所有行都包含相同的列,第一行包含列名称。
  • 模板的数据只需要来自一个随机选择的行,或者如果您需要多个行中的数据,则有时它们是否是同一行也没关系。

假设您的Excel工作簿位于c:\ xl \ rnd.xlsx,数据位于Sheet1中。

调用第一列k,然后在其中输入行号

k
1
2
3

...

将第二列称为r。在单元格B2中,输入以下公式

=COUNT(A:A)

在单元格B3,B4等中输入以下公式

=RANDBETWEEN(2,$B$2)

请勿将第2行(其中k = 1)用于数据。

根据需要创建并填充尽可能多的其他列(总计最多255个)。如果您有任何带有备注文本的列(长度超过255个字符),请确保将备注文本放在第2行中。这应确保Word可以获取任何以后的备注字段的完整文本。

在Word中,对于要插入的每个项目,使用要插入的数据项的列名(而不是“ mycolumn”)插入以下嵌套字段

{ DATABASE \d "c:\\xl\\rnd.xlsx" \s "SELECT mycolumn FROM [Sheet1$] WHERE k = { DATABASE \d "c:\\xl\\rnd.xlsx" \s "SELECT r FROM [Sheet1$]  WHERE k = 2" }" }

(请确保将路径名中的反斜杠加倍,并确保两对{}是可以在Windows Word上使用ctrl-F9插入的特殊字段代码大括号。

如果要从同一Excel行中选择多个项目,请使用同一索引行(即k = 2)。如果要从其他记录中获取项目,请使用其他索引(例如k = 3)。

保存您的模板。

当您想创建一个新测试(或其他)时,

  1. 打开Excel文件并添加所需的任何新数据,然后重新计算。保存Excel文件,但不要关闭它。工作表。那应该更新RANDBETWEEN值
  2. 制作模板的副本(如果是普通的.docx / m,或者打开基于该模板的新文档(如果是.dotx / m)并保存
  3. 选择文档正文(ctrl-A),然后按F9键更新所有字段
  4. 假设您对结果满意,请通过选择文档正文并按ctrl-shift-F9“修复”它们。
  5. 保存文件

这种方法有缺点,包括

  • 如前所述,如果您需要数据来自不同的行,则不能保证它们是不同的,因为对于多个k值,r可以具有相同的值。我想如果您没有太多数据,则可以重复步骤(1)和(3),直到获得满意的结果。否则,有必要考虑一种避免获取重复行的方法,而这可能涉及VBA,在这种情况下,您也可以用另一种方式来完成整个操作。
  • 同样,这些天来,Word在每个DATABASE字段结果的开头都无助地插入了一个段落标记。可以使用数字/日期时间格式设置开关删除数字和日期结果,但不能删除文本。如果必须删除这些段落标记,则需要使用“查找/替换”的可靠机制,或者(再次)需要一些VBA。
  • DATABASE字段在Word表(可能还有其他地方)中不起作用。如果需要将数据放在这些位置,则需要使用SET字段将书签设置为结果,然后在需要数据的位置使用REF字段。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.