我们在用Excel录入表格数据时,常常会遇到某列数据的值只在几个固定值中选择一个的情况,比如:人的性别列只可能录入男或女,对学历列只可能录入高中、大专、本科、研究生之一等。遇到这类数据,如果我们手工录入,效率既低又容易出错,最好的解决办法是提供一个下拉列表框供我们选择其中的值。下面就通过一个编排教师的课表为例教大家如何实现,该Excel表格能在填表时选择教师姓名,并能在另一列表中选择他所负责的课程名称。 <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> 一 创建数据源表 在sheet2表中输入教师姓名以及所负责的课程,把教师姓名横放在第2行。选中B2:F2,即教师姓名。然后在名称框为它输入一个名字“name”(图1),输入完成后一定要按回车,转到sheet1工作表。 二 数据关联 为了在sheet1表引用name名称,在教师姓名列下拉框选(B3:B9)单元格,点击菜单栏中的“数据→有效性”,在弹出的“数据有效性”对话框中选择“设置”选项卡,在“允许”选择框中选择“序列”,在来源输入框中输入“=name”(图2),点击“确定”后,在下拉列表中就可选择各个教师了。 提示:现在就可体会出名称框的妙用,因为来源的拾取按钮是不能跨表去拾取其他表的数据的。 第二步就是实现能够自动选择教师所负责的课程,由于教师姓名是变动的,要求负责的课程名称也要随之变动。负责课程这一列中的有效性数据来自于教师姓名这一列,怎么解决这个问题?同样,我们可用名称框来解决。 回到sheet2表,用不着给表中的每个教师的课程单独取名,很麻烦也很耽误时间。把整个区域选中(B2:F6),用每一列的第一行数据取名,点击“插入→名称→指定”,在指定名称对话框中只选中“首行”(图3),点击“确定”后就可在sheet1表中使用了。 转到sheet1表,把负责课程列下的区域选中(C3:C9),点击“数据→有效性→序列”。接着就要注意来源输入框中的内容了,因为不能等于单元格,在这里希望引用教师姓名所对应的名称里的数据来做下拉列表,这里要用到函数indirect,它表示从某一单元格中取数据,然后把此数据转换成一个区域。在来源输入框中输入“=indirect(”,点击B3单元格,出现“=indirect($B$3)”,这里是绝对引用,按F4键改成相对引用“=indirect(B3)”,确定后会有一个警告提示框,源目前包含错误,是否继续(图4)?点击“是”继续就行了。 提示:有人会因为出现“错误提示”就不敢继续了。为什么会出现错误提示?这是因为B3单元格中没有填姓名,所以会出现“错误提示”。 现在,点击sheet1表中的B3到C9区域任一个单元格都会出现下拉列表框供你选择欲输入的值,如果今后教师有变化或他负责的课程有变化,只要在sheet2表中稍做修改即可,轻松省事! |
转载于:https://blog.51cto.com/netlin/244806