收藏 分享(赏)

Excel中的“宏”的应用.doc

上传人:dreamzhangning 文档编号:2313120 上传时间:2018-09-10 格式:DOC 页数:5 大小:36KB
下载 相关 举报
Excel中的“宏”的应用.doc_第1页
第1页 / 共5页
Excel中的“宏”的应用.doc_第2页
第2页 / 共5页
Excel中的“宏”的应用.doc_第3页
第3页 / 共5页
Excel中的“宏”的应用.doc_第4页
第4页 / 共5页
Excel中的“宏”的应用.doc_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

1、office/9.shtml target=_blank class=articleExcel 的强大优势还在于它提供的宏语言 Visual Basic for Application(VBA).Visual Basic 是 windows 环境下开发应用软件的一种通用程序设计语言,功能强大,简便易用。VBA 是它的一个子集,可以广泛地应用于 Microsoft 公司开发的各种软件中,例如 Word、Excel 、Access 等。 那么,“宏 “到底是什么呢?在 Excel 97中,“宏“ 是一个难以理解的概念,但对于一个具体的“宏“ 而言,却是容易理解的,如果说“将一块文字变为注释:黑体注

2、释:,字号为注释:三号注释:“ 就可以看作一个“宏“的话,那么“宏“ 就不难理解了,其实 Excel 97中的许多操作都可以是一个 “宏“。“记录宏“其实就是将工作的一系列操作结果录制下来,并命名存储(相当于 VB 中一个子程序) 。在 Excel 97中,“ 记录宏“仅记录操作结果,而不记录操作过程。例如,改变文字字体时,需要打开“字体“ 栏中的下拉列表,再选择一种字体,这时文字即变为所选择的字体,这是一个过程,结果是将所选择的文字改变为所选择的字体。而“记录宏“ 则只记录“将所选择的文字改变为所选择的字体“这一结果。Excel 97中工作表是由行和列组成的二维表格,我们可以通过系统提供的语

3、句activesheet.cells(I,j),将当前工作表中的第 I 行第 j 列所在的单元格中的数据取出(也可将它数据填入到指定的单元格中) ,然后反把它放入所定义的数组中,这时就可以对其进行各种操作,如求平均分、总分、分数段人数等等。本人就利用 Excel 97中所提供的宏功能来做学生成绩的分析处理程序。本程序是 Excel中的一个文件,其中包含以下几个宏:分班、总分、平均分、分数段、删除等。说明:本程序是以本校高三理科班学生成绩进行分析。有关程序中用到的几具宏的功能说明:分班:针对于难以确定班级的情况下,以班为单位进行分班,本宏可以作为高一新生入学时进行分班的功能。总分:对原始的成绩自

4、动求总分。平均分:对原始的成绩以班为单位进行各学科平均成绩的计算及全校各学科成绩的计算。分数段:给定一个最高分数及最低分数,然后统计出各班各个分数段的人数,各分数段人数进行累计。删除:用于删除不用的工作表。现将各个宏的代码列举如下:分班Sub 分班()Const studentno = 191 注释:学生人数Const zdno = 12 注释:字段数Dim zd$(zdno) 注释:定义为12个字段的数组Dim a(studentno, zdno), stu(60, zdno)Dim nam$(studentno), bjname$(60) 注释:定义一个存放全校学生名字及各班学生名字的数组

5、Dim bj(studentno) 注释:定义存放班级的一个数组注释:理科班工作表Sheets(“高三理“).SelectFor i = 2 To studentnobj(i) = ActiveSheet.Cells(i, 1)nam$(i) = ActiveSheet.Cells(i, 2)For j = 3 To zdnoa(i, j) = ActiveSheet.Cells(i, j)Next jNext i注释:存放字段到数组中。For i = 1 To zdnozd$(i) = ActiveSheet.Cells(1, i)Next i注释:先建立各个班级的工作表Sheets(“高三

6、理“).SelectSheets(“高三理“).Copy After:=Sheets(“分数段“)Sheets(“高三理 (2)“).SelectSheets(“高三理 (2)“).Name = “33“For i = 2 To studentnoFor j = 1 To zdnoActiveSheet.Cells(i, j) = Space$(1)Next jNext iRange(“a1“).SelectFor i = 1 To zdnoActiveSheet.Cells(1, i) = zd$(i)Next i注释:34到36班工作表的建立For i = 34 To 36x$ = Mid

7、$(Str(33), 2)Sheets(x$).SelectSheets(x$).Copy After:=Sheets(“分数段“)Sheets(x$ + “ (2)“).SelectSheets(x$ + “ (2)“).Name = Mid$(Str(i), 2)Next i注释:具体分班。For k = 33 To 36bjrs = 0x$ = Mid$(Str(k), 2)no = k Mod 10Sheets(x$).SelectFor i = 2 To studentnoIf bj(i) = no Thenbjrs = bjrs + 1bjname$(bjrs) = nam$(i)

8、For j = 3 To zdnostu(bjrs, j) = a(i, j)Next jEnd IfNext iFor i = 2 To bjrsActiveSheet.Cells(i, 1) = noActiveSheet.Cells(i, 2) = bjname$(i)For j = 3 To zdnoActiveSheet.Cells(i, j) = stu(i, j)Next jNext iNext kEnd Sub总分Const studentno = 190Const xknum = 6Const zdnum = 12Sheets(“高三理“).SelectFor i = 2 T

9、o studentno + 1Sum = 0For j = 1 To xknumSum = Sum + ActiveSheet.Cells(i, j + 3)Next jActiveSheet.Cells(i, zdnum-1) = SumNext iEnd Sub平均分Sub 平均分()Const studentno = 190Const xknum = 6Dim fs(studentno, xknum), pjf3(4, 6), bjrs(4), qxpjf(6)Dim bj(studentno)Sheets(“高三理“).Select注释:以下程序段用于求全校平均分For i = 1 T

10、o studentnobj(i) = ActiveSheet.Cells(i + 1, 1)For j = 1 To xknumfs(i, j) = ActiveSheet.Cells(i + 1, j + 3)Next jNext iFor i = 1 To xknumSum = 0For j = 1 To studentnoSum = Sum + fs(j, i)Next jqxpjf(i) = Sum / (j - 1)Next i注释:以下程序段用于求各班平均分For j = 1 To 4For i = 1 To studentnoIf bj(i) = j + 2 Thenbjrs(j

11、) = bjrs(j) + 1For k = 1 To xknumpjf3(j, k) = pjf3(j, k) + fs(i, k)Next kEnd IfNext iNext jFor j = 1 To 4For i = 1 To 6pjf3(j, i) = pjf3(j, i) / bjrs(j)Next iNext j注释:写入各班各科平均分Sheets(“平均分“).SelectFor i = 1 To 4For j = 1 To 6ActiveSheet.Cells(i + 2, j + 1) = pjf3(i, j)Next jNext i注释:写入全校各科平均分i = 7For

12、 j = 1 To 6ActiveSheet.Cells(i, j + 1) = qxpjf(j)Next jEnd Sub分数段Sub 分数段()Const max = 600Const min = 390Const studentno = 190Const bjnum = 4Const fsdnum = 22Dim bjfsd(bjnum, fsdnum), zf(studentno, 2)Sheets(“高三理“).SelectFor i = 1 To studentnozf(i, 1) = ActiveSheet.Cells(i + 1, 1) 注释:存放班级zf(i, 2) = Ac

13、tiveSheet.Cells(i + 1, 11) 注释:存放总分Next iFor i = 1 To studentnoFor j = 1 To 4 注释:3-6班共4个班级If zf(i, 1) = j + 2 ThenFor k = max To min Step -10low = Int(max + 10 - k) / 10)If zf(i, 2) k Then bjfsd(j, low) = bjfsd(j, low) + 1Next kEnd IfNext jNext iSheets(“sheet3“).SelectFor i = 3 To 6For k = 1 To fsdnu

14、mActiveSheet.Cells(i, k + 1) = bjfsd(i - 2, k)Next kNext iRange(“M3:W6“).SelectSelection.CutActiveWindow.LargeScroll ToRight:=-1Range(“B8“).SelectActiveSheet.PasteEnd Sub 删除Sub 删除()Sheets(“33“).SelectActiveWindow.SelectedSheets.DeleteSheets(“34“).SelectActiveWindow.SelectedSheets.DeleteSheets(“35“).SelectActiveWindow.SelectedSheets.DeleteSheets(“36“).SelectActiveWindow.SelectedSheets.DeleteEnd Sub

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 大学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报