1、在 excel 中如何自编函数并运用工作中如果有大量的计算并很复杂,可以自编函数并保存下来,以后可以在相似的运算中套用工式,或在同一个表格中出现了反复的同格式运算时也可以用。以下以做专业教学计划表时安排课程算课时为例说明。造计划表时要在八个学期安排各门课程,由于每学期周课时有限制,一开始安排时所放的课程可能会在八个学期间移来移去,具体安排多少课时或安排几个学期也是会变动。由于八个学期其实周数并不全是 18 周,所以一移动该门课总课时总会变。如果有一个公式能自动计算变动的周课时并算出该课程该学期的总课时,会减少很多麻烦。其它如总学分、全部总课时或实践课时等也可以依此做出相同的公式。方法如下:1.
2、 在“工具”菜单上,指向“宏”,然后单击“Visual Basic 编辑器”。 2. 在“Microsoft Visual Basic”窗口中的“插入”菜单上,单击“模块”。 3. 在“模块”窗口中,键入函数代码。例如,计算每门课“总学时”的函数可如下所示: (Function 总学时(MyNum1, MyNum2, MyNum3, MyNum4, MyNum5, MyNum6, MyNum7, MyNum8)总学时 = MyNum1 * 15 + MyNum3 * 16 + (MyNum2 + MyNum4 + MyNum5 + MyNum6) * 18 + MyNum7 * 14 + My
3、Num8 * 6End Function)说明:由于每门课不知道移动时会出现在 excel 表格八个学期的列中的哪一列,但它安排在了某个学期,则其它学期的相应位置为空(值为 0),这样,设计一个公式把把八个学期全算进去,则没有安排此课的学期不会有学时。上面的 MyNum1 至 MyNum8 是 excel 自定义函数的自定义变量,这里对应八个学期某门课所对应的八个单元格。第一学期为 15 周,第三学期为 16 周,第七学期为 14 周,第八为 6 周,其余为 18 周。因此该课的总学时可以用八学期算总数的方式得出。(注:第一行定义八个变量值,用英文逗号隔开,不需要空格。图上第二行数值之间的空格
4、并不需要输入时敲入,函数按正常输入完成后系统自动分出空格。)4. 在“文件”菜单上,单击“关闭并返回到 Microsoft Excel”。 5. 在工作表上,在需要输入一门课程总学时的地方调用函数,就像使用任何工作表函数一样。点“插入函数”,在其中找到自定义函数“总学时”并调用。6. 此时会出现对话框,显示这个函数的八个变量 MyNum1 至 MyNum8,这时要定义这几个变量所对应的值,也就是该门课所在的行与八个学期的列交叉处的八个单元格,分别选中双击确定。如图:此时在计算现代汉语总课时的单元格插入函数“总学时”,跳出对话框,要求指定 MyNum 八个变量的值。如图点每个变量右侧的红箭头,会
5、跳回到 excel 表格,双击选定单元格后会回到此页,直到八个变量选定。7. 全部选定后确定,现代汉语的总课时就会出现在单元格中。将它采用下拉的方式,那么接下来的古代汉语等课程也会用同样的方法算出总课时,非常方便。其它地方的应用也是如此。使用函数的好处在于可以避免通常所用的利用“=”后输入计算格式然后下拉应用的一个不便利之处:后者要求所有待算的数据连续不断。如果中间被打断,就要重新在起始的第一行或列重做一个以之为基础的分式。如这里的英语听力、英语口语就必需重新做公式计算,显然是比较麻烦的。利用函数则可以在不同的地方将之插入,以随时开始计算。8. MyNum1 点击后选现汉第一学期所对应单元格用
6、这种方式创建的函数仅可用于创建它的工作簿中。如果想在别处使用该函数,可以将该函数的代码复制到其他工作簿的 VBA 模块;或者,如果您是程序员,可以将该函数复制进一个用作函数库的工作簿中,并将该工作簿编译为加载项程序。注释 本文中的示例已高度简化,以便您了解基础知识。要在 VBA 中创建复杂的函数,需要一些 Excel 2000 VBA 对象模型、VB 语言结构、VBA 环境的知识。例如,想在创建的任何函数中声明变量并返回数据类型。要开始学习有关 VBA 编程的知识,可参考下列资料。9. 在“工具”菜单上,指向“宏”,然后单击“Visual Basic 编辑器”。 10. 在“Microsoft
7、 Visual Basic”窗口中的“插入”菜单上,单击“模块”。 11. 在“模块”窗口中,键入函数代码。例如,一个计算 6% 销售佣金的函数可能如下所示: 上面示例中的第一行创建了一个名为“佣金”的函数,执行对一个数字或单元格引用的计算。该函数使用变量 MyNum 来存储单元格中的数字或值。第二行通过用 0.06 乘以数字或单元格引用 (MyNum) 来计算佣金函数的值(更复杂的函数可以有几行代码来执行计算)。第三行结束函数代码。12. 在“文件”菜单上,单击“关闭并返回到 Microsoft Excel”。 13. 在工作表上,在公式中使用函数,就像使用任何工作表函数一样。例如,可以使用佣金函数来计算销售佣金: 用这种方式创建的函数仅可用于创建它的工作簿中。如果想在别处使用该函数,可以将该函数的代码复制到其他工作簿的 VBA 模块;或者,如果您是程序员,可以将该函数复制进一个用作函数库的工作簿中,并将该工作簿编译为加载项程序。注释 本文中的示例已高度简化,以便您了解基础知识。要在 VBA 中创建复杂的函数,需要一些 Excel 2000 VBA 对象模型、VB 语言结构、VBA 环境的知识。例如,想在创建的任何函数中声明变量并返回数据类型。要开始学习有关 VBA 编程的知识,可参考下列资料。