Excel宏的应用.docx

上传人:b****1 文档编号:23127047 上传时间:2023-05-08 格式:DOCX 页数:28 大小:30.04KB
下载 相关 举报
Excel宏的应用.docx_第1页
第1页 / 共28页
Excel宏的应用.docx_第2页
第2页 / 共28页
Excel宏的应用.docx_第3页
第3页 / 共28页
Excel宏的应用.docx_第4页
第4页 / 共28页
Excel宏的应用.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

Excel宏的应用.docx

《Excel宏的应用.docx》由会员分享,可在线阅读,更多相关《Excel宏的应用.docx(28页珍藏版)》请在冰豆网上搜索。

Excel宏的应用.docx

Excel宏的应用

Excel宏的应用

Excel宏的应用-成绩分析处理程序

文章来源:

互联网

Excel电子表格软件是应用最广泛的软件之一,它的数据处理、图表功能及各种函数和工具深受广大用户的喜爱。

Excel文件是一个工作薄,一个工作薄最多可以包含255个工作表,每个工作表又可以包含大量的数据。

Excel的强大优势还在于它提供的宏语言VisualBasic

forApplication(VBA).VisualBasic是windows环境下开发应用软件的一种通用程序设计语言,功能强大,简便易用。

VBA是它的一个子集,可以广泛地应用于Microsoft公司开发的各种软件中,例如Word、Excel、Access等。

那么,"宏"到底是什么呢,

在Excel中,"宏"是一个难以理解的概念,但对于一个具体的"宏"而言,却是容易理解的,如果说"将一块文字变为'黑体',字号为'三号'"就可以看作一个"宏"的话,那么"宏"就不难理解了,其实Excel中的许多操作都可以是一个"宏"。

"记录宏"其实就是将工作的一系列操作结果录制下来,并命名存储(相当于VB中一个子程序)。

在Excel中,"记录宏"仅记录操作结果,而不记录操作过程。

例如,改变文字字体时,需要打开"字体"栏中的下拉列表,再选择一种字体,这时文字即变为所选择的字体,这是一个过程,结果是将所选择的文字改变为所选择的字体。

而"记录宏"则只记录"将所选择的文字改变为所选择的字体"这一结果。

Excel中工作表是由行和列组成的二维表格,我们可以通过系统提供的语句activesheet.cells(I,j),将当前工作表中的第I行第j列所在的单元格中的数据取出(也可将它数据填入到指定的单元格中),然后反把它放入所定义的数组中,这时就可以对其进行各种操作,如求平均分、总分、分数段人数等等。

本人就利用Excel中所提供的宏功能来做学生成绩的分析处理程序。

本程序是Excel中的一个文件,其中包含以下几个宏:

分班、总分、平均分、分数段、删除等。

本程序是以本校高三理科班学生成绩进行分析。

有关程序中用到的几具宏的功能说明:

分班:

针对于难以确定班级的情况下,以班为单位进行分班,本宏可以作为高一新生入学时进行分班的功能。

总分:

对原始的成绩自动求总分。

平均分:

对原始的成绩以班为单位进行各学科平均成绩的计算及全校各学科成绩的计算。

分数段:

给定一个最高分数及最低分数,然后统计出各班各个分数段的人数,各分数段人数进行累计。

删除:

用于删除不用的工作表。

现将各个宏的代码列举如下:

一.分班

Sub分班()

Conststudentno=191'学生人数

Constzdno=12'字段数

Dimzd$(zdno)'定义为12个字段的数组

Dima(studentno,zdno),stu(60,zdno)Dimnam$(studentno),bjname$(60)'定义一个存放全校学生名

字及各班学生名字的数组

Dimbj(studentno)'定义存放班级的一个数组

'理科班工作表

Sheets("高三理").Select

Fori=2Tostudentno

bj(i)=ActiveSheet.Cells(i,1)

nam$(i)=ActiveSheet.Cells(i,2)

Forj=3Tozdno

a(i,j)=ActiveSheet.Cells(i,j)

Nextj

Nexti

'存放字段到数组中。

Fori=1Tozdno

zd$(i)=ActiveSheet.Cells(1,i)Nexti

'先建立各个班级的工作表

Sheets("高三理").Select

Sheets("高三理").CopyAfter:

=Sheets("分数段")

Sheets("高三理

(2)").Select

Sheets("高三理

(2)").Name="33"

Fori=2Tostudentno

Forj=1Tozdno

ActiveSheet.Cells(i,j)=Space$

(1)

Nextj

Nexti

Range("a1").Select

Fori=1Tozdno

ActiveSheet.Cells(1,i)=zd$(i)

Nexti

'34到36班工作表的建立

Fori=34To36

x$=Mid$(Str(33),2)

Sheets(x$).Select

Sheets(x$).CopyAfter:

=Sheets("分数段")

Sheets(x$+"

(2)").Select

Sheets(x$+"

(2)").Name=Mid$(Str(i),2)

Nexti

'具体分班。

Fork=33To36

bjrs=0

x$=Mid$(Str(k),2)

no=kMod10

Sheets(x$).Select

Fori=2Tostudentno

Ifbj(i)=noThen

bjrs=bjrs+1

bjname$(bjrs)=nam$(i)

Forj=3Tozdno

stu(bjrs,j)=a(i,j)

Nextj

EndIf

Nexti

Fori=2Tobjrs

ActiveSheet.Cells(i,1)=no

ActiveSheet.Cells(i,2)=bjname$(i)

Forj=3Tozdno

ActiveSheet.Cells(i,j)=stu(i,j)

Nextj

Nexti

Nextk

EndSub

二.总分

Conststudentno=190

Constxknum=6

Constzdnum=12

Sheets("高三理").Select

Fori=2Tostudentno+1

Sum=0

Forj=1Toxknum

Sum=Sum+ActiveSheet.Cells(i,j+3)

Nextj

ActiveSheet.Cells(i,zdnum-1)=Sum

Nexti

EndSub

三.平均分

Sub平均分()

Conststudentno=190

Constxknum=6

Dimfs(studentno,xknum),pjf3(4,6),bjrs(4),qxpjf(6)

Dimbj(studentno)

Sheets("高三理").Select

'以下程序段用于求全校平均分

Fori=1Tostudentno

bj(i)=ActiveSheet.Cells(i+1,1)

Forj=1Toxknum

fs(i,j)=ActiveSheet.Cells(i+1,j+3)

Nextj

Nexti

Fori=1Toxknum

Sum=0

Forj=1Tostudentno

um=Sum+fs(j,i)

Nextj

qxpjf(i)=Sum/(j-1)Nexti

'以下程序段用于求各班平均分

Forj=1To4

Fori=1Tostudentno

Ifbj(i)=j+2Then

bjrs(j)=bjrs(j)+1

Fork=1Toxknum

pjf3(j,k)=pjf3(j,k)+fs(i,k)

Nextk

EndIf

Nexti

Nextj

Forj=1To4

Fori=1To6

pjf3(j,i)=pjf3(j,i)/bjrs(j)

Nexti

Nextj

'写入各班各科平均分

Sheets("平均分").Select

Fori=1To4

Forj=1To6

ActiveSheet.Cells(i+2,j+1)=pjf3(i,j)

Nextj

Nexti

'写入全校各科平均分

i=7

Forj=1To6

ActiveSheet.Cells(i,j+1)=qxpjf(j)

Nextj

EndSub

四.分数段

Sub分数段()

Constmax=600

Constmin=390

Conststudentno=190Constbjnum=4

Constfsdnum=22

Dimbjfsd(bjnum,fsdnum),zf(studentno,2)

Sheets("高三理").Select

Fori=1Tostudentno

zf(i,1)=ActiveSheet.Cells(i+1,1)'存放班级

zf(i,2)=ActiveSheet.Cells(i+1,11)'存放总分

Nexti

Fori=1Tostudentno

Forj=1To4'3---6班共4个班级

Ifzf(i,1)=j+2Then

Fork=maxTominStep-10

low=Int((max+10-k)/10)

Ifzf(i,2)>kThenbjfsd(j,low)=bjfsd(j,low)

+1

Nextk

EndIf

Nextj

Nexti

Sheets("sheet3").Select

Fori=3To6

Fork=1Tofsdnum

ActiveSheet.Cells(i,k+1)=bjfsd(i-2,k)

Nextk

Nexti

Range("M3:

W6").Select

Selection.Cut

ActiveWindow.LargeScrollToRight:

=-1

Range("B8").Select

ActiveSheet.Paste

EndSub

五.删除

Sub删除()

Sheets("33").Select

ActiveWindow.SelectedSheets.Delete

Sheets("34").Select

ActiveWindow.SelectedSheets.Delete

Sheets("35").Select

ActiveWindow.SelectedSheets.Delete

Sheets("36").Select

ActiveWindow.SelectedSheets.DeleteEndSub

六.本程序的界面及各个宏运行的结果

平均分统计结果:

总分统计结果:

分班结果

分数段统计结果

常用办公软件Excel技巧的整理、讲解,在这里给读者们看一看,给大家一些提示,希望在你在平时能用得上。

1、两列数据查找相同值对应的位置

=MATCH(B1,A:

A,0)

2、已知公式得结果

定义名称=EVALUATE(Sheet1~C1)

已知结果得公式

定义名称=GET.CELL(6,Sheet1~C1)

3、强制换行

用Alt+Enter

4、超过15位数字输入

这个问题问的人太多了,也收起来吧。

一、单元格设置为文本;二、在输入数字前先输入'

5、如果隐藏了B列,如果让它显示出来,

选中A到C列,点击右键,取消隐藏

选中A到C列,双击选中任一列宽线或改变任一列宽

将鼠标移到到AC列之间,等鼠标变为双竖线时拖动之。

6、EXCEL中行列互换

复制,选择性粘贴,选中转置,确定即可

7、Excel是怎么加密的

(1)、保存时可以的另存为>>右上角的"工具">>常规>>设置

(2)、工具>>选项>>安全性

8、关于COUNTIF

COUNTIF函数只能有一个条件,如大于90,为=COUNTIF(A1:

A10,">=90")

介于80与90之间需用减,为=COUNTIF(A1:

A10,">80")-COUNTIF(A1:

A10,">90")

9、根据身份证号提取出生日期

(1)、=IF(LEN(A1)=18,DATE(MID(A1,7,4),MID(A1,11,2),MID(A1,13,2)),IF(LEN(A1)=15,DATE(MID(A1,7,2),MID(A1,9,2),MID(A1,11,2)),"错误身份证号"))

(2)、=TEXT(MID(A2,7,6+(LEN(A2)=18)*2),"#-00-00")*1

10、想在SHEET2中完全引用SHEET1输入的数据

工作组,按住Shift或Ctrl键,同时选定Sheet1、Sheet2。

11、一列中不输入重复数字

[数据]--[有效性]--[自定义]--[公式]

输入=COUNTIF(A:

A,A1)=1

如果要查找重复输入的数字

条件格式》公式》=COUNTIF(A:

A,A5)>1》格式选红色

12、直接打开一个电子表格文件的时候打不开

“文件夹选项”-“文件类型”中找到.XLS文件,并在“高级”中确认是否有参数1%,如果没有,请手工加上

13、Excel下拉菜单的实现

[数据]-[有效性]-[序列]

14、10列数据合计成一列

=SUM(OFFSET($A,(ROW()-2)*10+1,,10,1))

15、查找数据公式两个(基本查找函数为VLOOKUP,MATCH)

(1)、根据符合行列两个条件查找对应结果

=VLOOKUP(H1,A1:

E7,MATCH(I1,A1:

E1,0),FALSE)

(2)、根据符合两列数据查找对应结果(为数组公式)

=INDEX(C1:

C7,MATCH(H1&I1,A1:

A7&B1:

B7,0))

16、如何隐藏单元格中的0

单元格格式自定义0;-0;;@或选项》视图》零值去

勾。

呵呵,如果用公式就要看情况了。

17、多个工作表的单元格合并计算

=Sheet1~D4+Sheet2~D4+Sheet3~D4,更好的=SUM(Sheet1:

Sheet3~D4)

18、获得工作表名称

(1)、定义名称:

Name

=GET.DOCUMENT(88)

(2)、定义名称:

Path

=GET.DOCUMENT

(2)

(3)、在A1中输入=CELL("filename")得到路径级文件名

在需要得到文件名的单元格输入

=MID(A1,FIND("*",SUBSTITUTE(A1,"","*",LEN(A1)-LEN(SUBSTITUTE(A1,"",""))))+1,LEN(A1))

(4)、自定义函数

PublicFunctionname()

DimfilenameAsString

filename=ActiveWorkbook.name

name=filename

EndFunction

19、如何获取一个月的最大天数

:

"=DAY(DATE(2002,3,1)-1)"或"=DAY(B1-1)",B1为"2001-03-01

数据区包含某一字符的项的总和,该用什么公式

=sumif(a:

a,"*"&"某一字符"&"*",数据区)

最后一行为文本:

=offset($b,MATCH(CHAR(65535),b:

b)-1,)

最后一行为数字:

=offset($b,MATCH(9.9999E+307,b:

b)-1,)

或者:

=lookup(2,1/(b1:

b1000<>""),b1:

b1000)

评委打分中,如何去掉两个以上最高分,两个以上最底分,求剩余人员的平均分,同时显示出被去掉的分数。

看看trimmean()函数帮助。

被去掉的分数:

最大两个:

=large(data,)

最小两个:

=small(data,)

怎样很简单的判断最后一位是字母

right(a1)*1

出错的字母

=IF(ISNUMBER(--RIGHT(A1,1)),"数字","字母")

=IF(ISERR(RIGHT(A1)*1),"字母","数字")

如何设置单元格,令其不接受包含空格的字符

选定A列

数据——有效性——自定义——公式

=iserror(find("",a1))

数据--有效性--自定义--公式

=len(a1)=len(trim(a1))

原来的函数是=a1+a4+a7+a10+a13+a16+a19+a22„„

现在是=sum(n(offset(a1,(row(1:

10)-1)*3,)))

在一个工作表中引用其他工作表中的数据,但是被引用的工作表不是固定的,根据我输入的工作表名自动选择相应的工作表中的数据,请问在公式里怎样引用,

=INDIRECT("A1"&"~"&"E1")A1为工作表名

奇数行求和=SUMPRODUCT((A1:

A1000)*MOD(ROW(A1:

A1000),2))

偶数行求和=SUMPRODUCT((A1:

A1000)*NOT(MOD(ROW(A1:

A1000),2)))

查看字符串字数

=LEN(A1)

求非空单元格数量

公式计算出来的数据,COUNTA不能用的(否则空字符也计算进去了)

=COUNTIF($E:

$E536,",*")

动态求和公式,自A列A1单元格到当前行前面一行的

单元格求和.

=SUM(INDIRECT("A1:

A"&ROW()-1))

20、比较好用的Excel文档修复工具

ExcelRecovery

21、EXCEL开方运算

将8开3次方,可以用这个公式,在单元格中输入=8^(1/3)

22、单元格中的数据分散对齐

文本格式》全角输入

23、查找工作表中的链接

Ctrl+~或编辑》链接

24、如何让空单元格自动填为0

选中需更改的区域》查找》空》替换》0

25、把Word里的数字转换到Excel

方法有多种,选中》复制》设置输入单元格为文本》选择性粘贴》值

选中》表格转换为文本》粘贴》分列》对分列选项设置为文本

另存为文本文件》EXCEL中打开文本文件》对导入文本对话框进行对应设置

如今使用Excel协助处理各种各样数据的人已经越来越多了,但Excel中一些隐蔽很深的小技巧却不为大多数人所知,

下面我们就把几个实用的、常用的小技巧列举给大家。

一、快速选中所有非空单元格:

在Excel中选中所有单元格比较容易,只需单击工作表左上角的行号(A、B、C„„)行与列号(1、2、3、„„)列的交叉空格,也可以按住左键拖选。

但如果要在一个有几百几千行数据的工作表中选中所有有数据的单元格时,再去按住左键拖选就有点麻烦了,这时我们可以这样做:

先在任意一个有数据的单元格中单击,然后按Ctrl+Shift+*键(先用一只手按住一个Ctrl键和一个Shift键不放开,再用另一只手按一下星号键)就能轻松搞定了。

二、快速打开所需工作表:

我们一般把许多数据相关的工作表建在一个工作簿中,且为查看方便,每个工作表的名都用汉字起得很长,由于受屏幕大小的限制,就造成了有许多工作表名称没有被显示出来,这时我们可以右键单击第一个工作表名前边的工作表选择按钮,再在弹出的菜单中选择你看不到的工作表。

(如图1)

图1

三、快速定位到某一单元格:

有时我们需要在一个几百上千的工作表中快速定位到某一个单元格,如想快速查看年级段第200名同学的总成绩:

1、单击“编辑”?

定位,在“定位”对话框中的“引用位置”框中输入L201(L是“总分”所在列,201是因为有表头,所在200名的基础上加1。

)点“确定”就能直接定位到年级段第200名同学总成绩的单元格了。

(如图2)

图2(点击看大图)

2、在编辑栏上的地址栏中直接输入行列号,然后回车即可。

(如图3)

四、打印行列号:

为了更加方便的查看数据及公式引用,有时需要把工作表的行号和列号也打印出来,如实施素质教育的今天,不准给学生排名次,但我们可以利用列号来查看学生的具体名次:

单击“文件”?

页面设置,在“页面设置”对话框中选择“工作表”选项卡,在“打印”项中把“行号列标”勾选上,点“确定”退出后再打印就可以了。

(如图4)

图4

五、利用分页预览调整打印区域:

数据在打印输出之前一般要使用打印预览查看一下纸张是否够大,如果只多出一两行或一两列,则需返复调整,这时可以单击“视图”?

分页预览,在分页预览模式下,直接按住左键拖动分页符(蓝色虚线)就可以了,调整完后再单击“视图”?

普通,返回默认模式。

(如图5)

Excel快速计算、统计混合编班考试成绩表

为了保证学生成绩录入和处理的公平性,学校采用混合编班统一录入的方式。

也就是说,把同年级多个班的学生成绩统一录入到一个Excel工作表中,而且使同班的学生不相邻。

这种情况下,想在不破坏原始工作表的情况下统计各班学生各科的总分、平均分及各科的分数段分布,咱们还得好好动一下脑子。

先看一下原始成绩表,如图1所示。

图1

第一列为学生的考号,其中考号的第5位和第6位数字是班级代码。

学生各科的成绩分别在C、D、E、F列。

而我们需要统计的是各学科各班的总分、平均分及各分数段人数

等项指标,如图2所示。

图2

一、总分的统计

在不破坏原工作表顺序的情况下,总分的统计我们可以使用SUM函数及数组公式来完成。

首先点击L3单元格计算01班语文科的总成绩。

输入“=SUM(IF(MID($A$2:

$A$150,5,2)=

$K3,$C$2:

$C$150))”,然后按下“Ctrl+Shift+Enter”快捷键,可以看到公式的最外层添加了数组公式标记(一对大括号),公式变身成为“{=SUM(IF(MID($A$2:

$A$150,5,2)=

$K3,$C$2:

$C$150))}”。

切记这对大括号是不可以手工输入的。

按下快捷键后,L3单元格立刻显示出了01班语文科的总分。

快吧?

还有更快的呢。

单击此单元格,向下拖动其填充句柄至L10单元格复制此公式,立刻各班的语文科总分就都有了。

方便吧?

简单介绍一下公式中用到的相关函数,那咱们就可以举一反三了。

MID($A$2:

$A$150,5,2)=$K3:

K3单元格是班级代码。

而MID函数可以截取字符串中的指定字符,如MID(A2,5,2)的含义是从A2单元格字符串的第5个字符开始截取2个字符组成新的字符串。

至于公式中所写的的

MID($A$2:

$A$150,5,2)就可以利用数组公式对A

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

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1