现有9个班的学生成绩单,包括3门课的成绩:

在Excel中被要求画出每班各科平均成绩的柱状图。

单纯用Excel整理数据很麻烦,共有9个班,每个班要求3节课的平均成绩,很费事。

Access数据库、Excel表格与VB编程完美结合实现Excel表格透视功能

您可以使用Access数据库来统计数据,然后返回Excel并绘制图表。

步骤1 :将数据直接粘贴到Access数据库

复制excel表格学生成绩数据-打开现有的Access数据库-创建表格-粘贴并保存

步骤2 :查询,制作统计数据

创建-查询设计-语句-执行:

select类、avg (国语)、avg )、avg )数学) from表1 group by类

実行結果:

复制到步骤Excel的表中,如图所示

单击左上角-右键单击复制-打开excel表格-粘贴-制图

贴至Excel表格:

绘图:

单击插入-图表-条形图

結果:

实际上,在实际工作中,有很多问题可以通过将Access数据库和Excel表组合起来解决,从而节约时间。 Excel表还提供了很多函数,用于对我们想要的结果进行分组和求解,但步骤很繁琐。

这样组合起来可以很好地解决各种各样的课题。 一个是利用Access数据库处理数据的优点,另一个是利用Excel表制图的优点,两个优点的结合必然会带来更多的成果。

VB程序自动数据处理Access数据库和Excel表格数据VB编程比较容易学习,不是计算机专家的人也可以很容易地掌握VB编程。 VB编程有足够的能力应对你的日常工作问题。

如果有需要处理运算的复杂数据,单纯地有表和数据库,则整个操作相当麻烦,不仅浪费时间,而且容易发生错误

本节介绍如何使用VB程序读取Access数据库中的数据和Excel表中的数据。

VB程序读取Excel表单数据

首先打开VB6.0编程。 打开后就是这个界面。

这是一个空的程序窗口,我们还没有添加控件和代码。 不详细说明VB6.0的接口。 我们现在只使用那个按钮控件。 是上面围着的东边。

这被称为“命令按钮”。 双击可跳转到窗口界面。

你可以继续双击写代码。

实际上,它与Access数据库和Excel表单中的VBA宏相同,但在语法上略有不同。 VB6.0可以编写小软件程序,但VBA宏只能作为插件。

编写读取Excel表数据的程序,实际上读取的代码大致已经确定。 大家直接复制这个固定的程序代码就可以了。 完全不需要自己敲代码。

大家看了这些代码,表示什么意思?

请看定义的内容:

dimxlappasexcel.applicationdimxlbookasexcel.workbookdimxlsheetasexcel.worksheetdimxlsheet1as excel.worksheet的几个定义都是

setxlapp=createobject ( Excel.application ) )用于创建Excel文件,表示要创建excel对象。 创建对象后,可以打开指定的文件。

这些措施包括:

set xlbook=xlapp.workbooks.open ( f:(报告运行表. xls ) ) xlApp.Visible=True//表示对象可见,表示在读取时文件

Set xlSheet1=xlBook.Worksheets ( )表1 ) ) /表示读取文件的哪个表,其中)读取表1 ) XLsheet1.activate/)是激活读取的表

要保证操作在当前表中进行,以上是固定模式,不用敲代码大家就可以复制了。

接下来,For i=4 To 89.Next i根据我们在读取和处理数据的过程中具体实现了什么功能来编制程序。

要进一步下移还是进入固定模式,请在读取文件内容后关闭文件。 否则,总会占用内存。

xbook.close xlapp.quitsetxlapp=nothing上是关闭文件并释放对象的过程。

MsgBox 'good job '是指程序运行后出现一个小对话框。 对话框中显示的字符是“good job”。 当然,也可以显示“程序已运行”。 很灵活。

代码写完后,运行程序吧。 点击这个小三角号码。

执行后,将显示弹出窗口。

你可以看到,这个表格上面只有一个按钮。 要执行我们刚才写的代码,点击上面的按钮就可以了。 单击“命令1”。

VB程序读取访问数据库数据

接下来,我们来看看VB如何与Access数据库交互。 其实,VB操作Access数据库的代码很简单。 看看以下内容就知道了。

前三行是定义。

dimconnasnewadodb.connectiondimstrconnasstringdimsqlasstring是固定模式,直接复制即可。

strconn=' provider=Microsoft.ace.oledb.12.0; Data Source=D:\0基础资料\data.accdb '语句在读取路径中查找文件的位置。

也是固定的模式,只要把文件名改了即可。

再往下是一条查询语句:

sql2='select b.* into yj1 from (select jh,min(rqx) as rqx1 from yjs07 group by jh) a left join yjs07 b on (a.jh=b.jh and a.rqx1=b.rqx)'这条查询语句就是我们要实现的复杂操作,

再往下:

conn.Open strConnconn.Execute (sql1)这两条语句就是执行我们前面写的的查询语句啦,也是固定的,只要把查询语句的名称改了就好。

Set conn=Nothing//这是释放文件,用完了要关掉。

再往下就是MsgBox 'good job',就是和上面操作Excel表格一样,程序运行完了之后会弹出一个对话框:

其实非计算机专业的人士也能够很好的学会编程,只要掌握技巧是很容易掌握的,小编身边有不少非计算机专业的人都在学习编程,只要掌握了编程,手头的工作会变的如此轻松。

VB程序存取Excel数据实例讲解先来看一个VB程序存取Excel表格数据的例子,我们要把“sheet1”表中一班的学生语文成绩用VB程序存取到“sheet2”表里面去。

首先打开安装好的VB6.0程序,然后保存到一个指定的文件夹下面,这样我们就有了一个空的VB程序,我们双击按钮控件,按钮控件就会自动跳到窗体上面:

在进入代码窗口之前我们简单把这个控件设计成好看的样式,点击属性窗口图标,就会弹出一个属性窗口,在这个窗口下,就能对我们的按钮进行设计啦:

然后点击按钮控件,在右边的属性窗口找到“Caption”字样,它就是控件要显示的名字,我们可以任意修改,改完后的效果是这样的:

再来改一下它的色彩吧,这样看起来漂亮些,就改成下面这样吧:

可以看到按钮变颜色,如果选上色彩后,没有变色,那一定有一个选项没选,就是下面这个要点Style选项的第二个类型,就允许我们对控件的色彩进行改变:

好了,继续双击这个设计完的按钮吧,这样就进入到编写代码的窗口了,就是下面这个样子:

先把昨天的固定代码复制过来,就是读取Excel表格数据固定引用的代码,在代码窗口的开始部分:

Dim xlApp As Excel.ApplicationDim xlBook As Excel.WorkbookDim xlSheet As Excel.WorksheetDim xlSheet1 As Excel.WorksheetDim xlSheet2 As Excel.WorksheetSet xlApp=CreateObject('Excel.Application')Set xlBook=xlApp.Workbooks.Open('F:\成绩表.xlsx')xlApp.Visible=TrueSet xlSheet1=xlBook.Worksheets('Sheet1')xlSheet1.Activate上面的'F:\成绩表.xlsx'和'Sheet1'是我们要读取数据的目标文件和目标表,

在代码窗口的结尾部分是这些固定的代码:

xlBook.ClosexlApp.QuitSet xlApp=NothingMsgBox '主人,黑猫警长向您报告,程序已运行完毕'

MsgBox后面的内容是可以随便修改的。

准备的代码都已经完工,就等着在上面中间的空白部分去实现我们要实现的工作,我们的目标是要把“sheet1”表中一班的学生语文成绩自动存取到“sheet2”表里面去。

我们先来把“sheet1”表中一班的数据读到变量里面去:

m=1For i=2 To 121【一共有121条学生数据】If Trim(xlSheet.Cells(i, 'a'))='一班' Then【条件判定】gs=gs + 1【记录一班学生数量】a1(m)=xlSheet1.Cells(i, 'a')【读班级】b1(m)=xlSheet1.Cells(i, 'b')【读姓名】c1(m)=xlSheet1.Cells(i, 'c')【读语文成绩】m=m + 1End IfNext i我们已经读完数据啦,

m=1For i=2 To gs【gs表示一班的学生人数】xlSheet2.Cells(i, 'a')=a1(m) 【写班级】xlSheet2.Cells(i, 'b')=b1(m) 【写姓名】xlSheet2.Cells(i, 'c')=c1(m) 【写语文成绩】m=m + 1Next i这样,

Dim a1(1 To 50), b1(1 To 50), c1(1 To 50)//【定义数组,装数据用的】Dim gs, i, m//【定义变量】最后,编完的程序是这样的:

来点击上面的小三角运行吧,运行之后是这样的:

点击按钮,看看有什么反应:

直接弹出这个文件啦,程序瞬间完成了我们的工作,问是否保存呢,我们点击取消就行,文件就会打开着,之后我们再保存。

点完取消会弹出这个信息框:

就是我们在程序里面做的提示信息,告诉我们工作已经完成。

VB程序操纵Access数据库先来创建一个空的VB程序,当然也可以用昨天做好现成的,只不过我们在旁边再加一个“按钮控件”而已,我们按照昨天的设置,

对今天新加的这个按钮显示的内容“Caption”改成“逆天操纵Access”,和背景色“BackColor”改成“粉色”,以及字体改成“楷体”和字体大小改成“小四”号,完成了相应的设置之后,

就是下面这个样子:

可以看到这个窗体多了一个按钮,双击它进入到编写代码窗口:

可以看到,上面的代码就是我们昨天编写的存取Excel文件数据用的代码,下面这个模块是空的:

Private Sub Command2_Click()End Sub我们需要编写程序代码,前半部分是固定模式的代码:

Dim conn As New ADODB.Connection//【定义一个数据库连接】Dim strConn As String//【定义一个字符串变量存放数据库所在路径】前半部分一切搞定,

再来看后半部分:

Set conn=Nothing//【工作完成后释放数据库连接】MsgBox '您的程序运行完毕'//【弹出消息框示意工作已经完成】

中间开始写我们要实现具体工作的代码。

现在就对下面这个学生成绩表,求三门成绩的总分放在新的字段中:

写代码:

用来装查询语句】strConn='Provider=microsoft.ace.oledb.12.0;Data Source=F:\1文章\个人数据库.accdb'//【读取数据库所在路径】sql1='alter table xscj add column 总分数float'//【增加一个“总分数”字段的语句】sql2='update xscj set 总分数=yy+yw+sx'//【算三门总分的语句】conn.Open strConn//【打开数据库】conn.Execute (sql1)//【执行语句1】conn.Execute (sql2)//【执行语句2】conn.Close//【关闭数据库】好了,

运行之后,就是这样了:

点击下面新增加的这个按钮,就是刚刚我们编写代码的控件,程序就开始运行:

可以看到,我们刚刚编写的程序瞬间运行完成,点击确定,来看看我们的数据库里面有什么变化吧:

总分算出来了,并且还在我们的数据库里面增加了一个字段,就是我们在程序里面已经添加的。

其实,这是最简单的,只有更复杂的工作才会动用我们去编程序,所以先把简单的学会,复杂的自然而然慢慢就学会。

Access数据库对字段进行分类查询有时,我们想要对数据库中的某类数据进行分类整理,使得结果一目了然,下面这个学生成绩表的总分,我们已经算出来了,我们想要很直观的表达哪个学生三门的平均成绩及格啦,

哪些没有及格:

那么有什么方法可以实现呢?下面我们来看看这两种方法:

一是使用update语句对字段进行更新修改

第一步,进入设计视图,新建一个字段,字段名是成绩分类

回到数据表视图吧。

第二步,创建一个查询,写查询语句:

update xscj set 成绩分类='及格' where 总分数=180

运行结果:

第三步,再创建一个查询,查询语句为:

update xscj set 成绩分类='及格' where 总分数180

运行结果:

再来看看第二种方法

二是使用iif函数直接对表进行查询

创建一个查询,查询语句为:

select 姓名,iif(总分数180,'不及格','及格') as 平均成绩from xscj

运行结果:

第一种方法以前接触过,就是对已有的学生成绩表进行更新查询,也就是对原表进行了增加字段的改动,这里面我们使用的是update语句,这个语句有固定的语法格式:

update 表名set 字段名where 条件第二种方法中的iif函数,我们并不经常接触到,但是这个函数对我们平常是非常有用的,它能够在不修改表的情况下,查询出我们想要的结果,

它实际并没有对原来存在的学生成绩表进行改动。

所以,两种方法,当需要改动时,我们用第一种方法,当不需要对原表进行改动时,我们选择第二种方法,你记住这个iff函数的语法格式:

【iif(条件,结果1,结果2)】,当条件满足时,即为真时,那么就返回结果1,否则返回结果2,上面的查询表示当总分数满足小于180分的时候,我们就返回“不及格”的结果,否则返回“及格”的结果。

喜欢的读者请关注、转发!