在EXCEL中使用VBA编程处理数据

时间:2025-04-20

EXCEL VBA 运用

在EXCEL中使用VBA编程处理数据

王强

(福建教育学院信息技术系,福建

福州350001)

王强:在

EXCEL

要:本文通过利用EXCEL中的VBA编写宏来自动生成全国等级考试机试安排表的实例,说明EXCEL中宏

的应用和单元格引用的方法。

关键词:EXCEL;宏;引用单元格;VBA中图分类号:TP311

文献标识码:B

2.用编号引用单元格

下例中,Cells(6,1)返回工作表“Sheet1”上的单元格“A6”,然后将Value属性设置为10。

SubEnterValue()

Worksheets("Sheet1").Cells(6,1).Value=10

EndSub

[1]

3.引用行或列

[1]

中使用编程处理数据

VBA

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

每个工作表又可以包含大量的数据。

Excel的强大优势还在于它提供的宏语言VisualBasicforApplication(VBA)。VisualBasic是windows环境下开发应用软件的一种通用程序设计语言,功能强大,简便易用。VBA是它的一个子集,可以广泛地应用于Microsoft公司开发的各种软件中,例如Word、Excel、Access等。

那么“,宏”到底是什么呢?在Excel中,“宏”是一个难以理解的概念,但对于一个具体的“宏”而言,却是容易理解的,如果说“将一块文字变为体’,字号为‘三号’”就可以看作一个“宏”的话,难理解了,其实Excel“,并命名存储(相当于VB)在Excel中,“记录宏”仅记录操作结果,而不记录操作过程。例如,改变文字字体时,需要打开“字体”栏中的下拉列表,再选择一种字体,这时文字即变为所选择的字体,这是一个过程,结果是将所选择的文字改变为所选择的字体。而“记录宏”则只记录“将所选择的文字改变为所选择的字体”这一结果。

Excel中工作表是由行和列组成的二维表格,我们可以通过系统提供的VBA语句和宏的功能,任意选取当前工作表中的单元格,对单元格中的数据加以处理,生成自己所需的报表,一点也不逊色于用其他语言来开发的应用程序。

本人就利用Excel提供的VBA语句和宏来处理全国计算机等级考试数据,最终由计算机自动生成上机考试安排表。在编写下面程序的过程中,我个人认为对于以前有一定编程能力的程序员来说,最基本的是如何使用VBA来引用单元格,其余的很大部分内容可以用记录宏的方法来完成。

下面举几种常用引用单元格的方法。

[1]

1.用A1样式的记号引用单元格和单元格区域

4.使用Union方法引用若干单元格区域SubMultipleRange()

Dimr1,r2,myMultipleRangeAsRange

Setr1=Sheets("Sheet1").Range("A1:B2")Setr2=Sheets("Sheet1").Range("C3:D4")SetmyMultipleRange=Union(r1,r2)myMultipleRange.Font.Bold=TrueEndSub

[1]

本程序是以全国等级考试返回的考生数据为例子。假设在工作薄中有一张工作表初始数据如下:(其中程序中主要用到第A,C,I列

)

福建教育学院学报二○○三年第十期

EXCEL VBA 运用

通过以下程序生成如下报表:

Next

’生成报表中的E18单元格数据(生成公式)

Sheets(sheetsname).Cells(lsrow+1,4).FormulaR1C1=

"=SUM(R[+Str(lsrow*-1)+"]C:R[-1]C)"

’对报表中的数据自动调整列宽Sheets(sheetsname).Select

Columns("A:A").EntireColumn.AutoFitRange("B:B,C:C").Select

Selection.NumberFormatLocal="0-"Columns("A:A").SelectSelection.InsertShift:=xlToRight

’合并报表中的A18:D18单元格,并输入“合计”Dimrange1AsRange

Setrange1=Cells(lsrow+1,1)Forlsj=2To4

Setrange1=Union(range1,Cells(lsrow+1,lsj))Nextlsj

range1.Select

Selection.MergeWithSelection

.HorizontalAlignment=xlCenter.VerticalAlignment=xlCenter.WrapText=False.Orientation=0.AddIndent..M=ith

Selection.Value="合计"

’自动生成考次,并合并相关的单元格,见报表中的A5:A17。

rowcount=lsrowlsi=""lsk=0

Forlsj=1Torowcount

IfLeft(Cells(lsj,2).Value,18)<>lsiThenlsk=lsk+1

Cells(lsj,1).Value=lsk

lsi=Left(Cells(lsj,2).Value,18)EndIfNextlsj

Setrange1=Cells(1,1)ls-i=0

Forlsj=1Torowcount

IfLen(Trim(Cells(lsj,1).Value))<>0Thenrange1.SelectSelection.MergeWithSelection

.HorizontalAlignment=xlCenter.VerticalAlignment=xlCenter.WrapText=False.Orientation=0.AddIndent=False.ShrinkToFit=False.MergeCells=TrueEndWithEndI

f

王强:在

EXCEL

中使用编程处理数据

VBA

以下为源程序:’宏开始

Subwqan()

’假设初始数据表名为“机试表”,生成的报表放在工作表名为“wangqiang"的表中

DimlsrowAsInteger

sheetsname="wangqiang"sheetsnameks="机试表"’生成工作表“wangqiang"Sheets(1).SelectSheets.Add

’统计生成考次、、和人数,见报表中B5:Sheets(1).Name=eSheets(sheetsnameks).lstime=Range("I2").Valuelszkzfirst=Range("A2").Valuelszkzsecond=lszkzfirstlsrowfirst=2lsrow=0

ForEachcInRange("i:i").Cells

Ifc.Row<>1Andc.Row<>2ThenIf(lstime<>c.Value)Thenlsrow=lsrow+1

lszkzsecond=Sheets(sheetsnameks).Cells(c.Row-1,1).Value

Sheets(Sheets(1).Name).Cells(lsrow,1).Value=

lstime

Sheets(Sheets(1).Name).Cells(lsrow,2).Value=

lszkzfirst

Sheets(Sheets(1).Name).Cells(lsrow,3).Value=

lszkzsecond

Sheets(Sheets(1).Name).Cells(lsrow,4).Value=

c.Row-lsrow …… 此处隐藏:5638字,全部文档内容请下载后查看。喜欢就下载吧 ……

在EXCEL中使用VBA编程处理数据.doc 将本文的Word文档下载到电脑

    精彩图片

    热门精选

    大家正在看

    × 游客快捷下载通道(下载后可以自由复制和排版)

    限时特价:7 元/份 原价:20元

    支付方式:

    开通VIP包月会员 特价:29元/月

    注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
    微信:fanwen365 QQ:370150219