匠品藝棧(zhàn)品牌企業      全國服務(wù)熱線:0755-82415862

excel中(zhōng)的宏是什(shí)麽意(yì)思

發(fā)布時(shí)間:2018-10-12 11:01:21  浏覽:5121次
excel電子(zǐ)表格(gé)軟件是應用最深(shēn)圳(zhèn)印刷(shuā)廠 廣泛的(de)軟件(jiàn)之一,它的數據(jù)處理、圖表功能及各種函數和工具(jù)深受廣大(dà)用戶(hù)的喜(xǐ)愛。excel文(wén)件是一(yī)個(gè)工作薄,一(yī)個工作薄(báo)最多可以(yǐ)包含(hán)255個工作表,每個(gè)工作(zuò)表又可以(yǐ)包含(hán)大量的數(shù)據。 

excel的(de)強大(dà)優(yōu)勢(shì)還在于它(tā)提供(gòng)的宏語言visual basic for application(vba).visual basic是windows環(huán)境下(xià)開(kāi)發(fā)應用(yòng)軟件的一種通(tōng)用程(chéng)序設計語(yǔ)言,功能強(qiáng)大,簡便易用。vba是它的(de)一個子集,可以廣泛地應用于(yú)microsoft公司(sī)開發的各種軟件中,例如(rú)word、excel、access等。 

那(nà)麽(me),"宏(hóng)"到底(dǐ)是什(shí)麽呢? 

在excel 97中(zhōng),"宏"是一個難以(yǐ)理解的(de)概念,但(dàn)對于一個(gè)具體的"宏(hóng)"而(ér)言,卻是(shì)容易理解(jiě)的,如(rú)果說"将一塊文(wén)字變爲(wèi)'黑體(tǐ)',字号爲(wèi)'三(sān)号(hào)'"就可(kě)以看(kàn)作(zuò)一(yī)個"宏(hóng)"的話,那麽"宏"就(jiù)不難(nán)理解了,其(qí)實excel 97中(zhōng)的許(xǔ)多操(cāo)作都(dōu)可以是一(yī)個"宏(hóng)"。 

"記(jì)錄宏"其(qí)實就是将工作的(de)一系列操作(zuò)結果錄制(zhì)下來(lái),并命(mìng)名存儲(相(xiàng)當于vb中(zhōng)一個子(zǐ)程序(xù))。在excel 97中,"記錄(lù)宏"僅(jǐn)記錄操作結果,而不(bú)記錄(lù)操作過程。例如(rú),改變(biàn)文(wén)字字體(tǐ)時,需要(yào)打開"字體"欄中的下拉(lā)列表,再選(xuǎn)擇一種字(zì)體,這時文字即變(biàn)爲所選擇的(de)字(zì)體,這是一個過(guò)程,結果(guǒ)是将(jiāng)所選擇的(de)文字(zì)改變(biàn)爲所選擇(zé)的字體。而(ér)"記錄(lù)宏(hóng)"則隻記(jì)錄"将(jiāng)所選擇的(de)文字改變爲所(suǒ)選擇的(de)字體"這(zhè)一結果。 

excel 97中(zhōng)工作(zuò)表是(shì)由行和列組成的二(èr)維表(biǎo)格,我們可以(yǐ)通(tōng)過系統提供的語句activesheet.cells(i,j),将(jiāng)當前工(gōng)作表(biǎo)中的第i行(háng)第(dì)j列(liè)所在的單(dān)元格中的數據取出(也可将它(tā)數據填入到指(zhǐ)定的單(dān)元(yuán)格中),然後反把它放入所(suǒ)定義的數組中,這時(shí)就可(kě)以對其進行各種操作,如求平(píng)均分(fèn)、總分、分數(shù)段人數等等。 

本(běn)人就利用excel 97中所(suǒ)提供的宏(hóng)功能來做(zuò)學生成績(jì)的分析處理程(chéng)序。本(běn)程(chéng)序是(shì)excel中的一個(gè)文件,其中包含以下幾(jǐ)個宏:分班、總分、平均分、分數段(duàn)、删除等(děng)。 
本程序(xù)是以(yǐ)本校(xiào)高三(sān)理科班(bān)學生成績進行分析。 

有(yǒu)關程序中(zhōng)用到的幾具(jù)宏的功(gōng)能說明(míng): 

分班:針對于難以(yǐ)确定班級(jí)的情況下,以班爲單位進(jìn)行分班,本宏可(kě)以作爲高(gāo)一新(xīn)生入學(xué)時進行(háng)分班(bān)的功能。 

總(zǒng)分:對原始(shǐ)的成(chéng)績自動求總分(fèn)。 

平均分:對原始的成績以(yǐ)班爲單位進行各學(xué)科平均成績的(de)計算(suàn)及全校各學科成績(jì)的計(jì)算。 

分數(shù)段(duàn):給定(dìng)一個(gè)最高分數(shù)及(jí)最(zuì)低分(fèn)數,然(rán)後統(tǒng)計出各(gè)班(bān)各個分(fèn)數段的人數,各分(fèn)數段(duàn)人數進行累計。 

删除:用于删除(chú)不用的工作表。 

現将(jiāng)各(gè)個(gè)宏的(de)代碼列舉如下(xià): 

一.分(fèn)班 

sub 分班() 
const studentno = 191 '學生人數 
const zdno = 12 '字(zì)段數(shù) 
dim zd$(zdno) '定義爲12個字段(duàn)的數(shù)組 
dim a(studentno, zdno), stu(60, zdno) 
dim nam$(studentno), bjname$(60) '定義一(yī)個存放全(quán)校學(xué)生名(míng)字及(jí)各班學生(shēng)名字的數(shù)組 
dim bj(studentno) '定義存(cún)放班(bān)級的(de)一個(gè)數組(zǔ) 
'理科(kē)班工(gōng)作表 
sheets("高三(sān)理").select 
for i = 2 to studentno 
bj(i) = activesheet.cells(i, 1) 
nam$(i) = activesheet.cells(i, 2) 
for j = 3 to zdno 
a(i, j) = activesheet.cells(i, j) 
next j 
next i 
'存放字(zì)段到數組中。 
for i = 1 to zdno 
zd$(i) = activesheet.cells(1, i) 
next i 
'先(xiān)建立各個班級(jí)的工作表 
sheets("高三(sān)理").select 
sheets("高(gāo)三理").copy after:=sheets("分數(shù)段") 
sheets("高三理 (2)").select 
sheets("高三理 (2)").name = "33" 
for i = 2 to studentno 
for j = 1 to zdno 
activesheet.cells(i, j) = space$(1) 
next j 
next i 
range("a1").select 
for i = 1 to zdno 
activesheet.cells(1, i) = zd$(i) 
next i 
'34到36班工作表(biǎo)的建立 
for i = 34 to 36 
x$ = mid$(str(33), 2) 
sheets(x$).select 
sheets(x$).copy after:=sheets("分數段(duàn)") 
sheets(x$ + " (2)").select 
sheets(x$ + " (2)").name = mid$(str(i), 2) 
next i 
'具體分班。 
for k = 33 to 36 
bjrs = 0 
x$ = mid$(str(k), 2) 
no = k mod 10 
sheets(x$).select 
for i = 2 to studentno 
if bj(i) = no then 
bjrs = bjrs + 1 
bjname$(bjrs) = nam$(i) 
for j = 3 to zdno 
stu(bjrs, j) = a(i, j) 
next j 
end if 
next i 
for i = 2 to bjrs 
activesheet.cells(i, 1) = no 
activesheet.cells(i, 2) = bjname$(i) 
for j = 3 to zdno 
activesheet.cells(i, j) = stu(i, j) 
next j 
next i 
next k 
end sub 

二.總(zǒng)分 

const studentno = 190 
const xknum = 6 
const zdnum = 12 
sheets("高三理").select 
for i = 2 to studentno + 1 
sum = 0 
for j = 1 to xknum 
sum = sum + activesheet.cells(i, j + 3) 
next j 
activesheet.cells(i, zdnum-1) = sum 
next i 
end sub 

三.平均分(fèn) 

sub 平均分() 
const studentno = 190 
const xknum = 6 
dim fs(studentno, xknum), pjf3(4, 6), bjrs(4), qxpjf(6) 
dim bj(studentno) 
sheets("高(gāo)三理").select 
'以下程序(xù)段用(yòng)于求全校(xiào)平均分 
for i = 1 to studentno 
bj(i) = activesheet.cells(i + 1, 1) 
for j = 1 to xknum 
fs(i, j) = activesheet.cells(i + 1, j + 3) 
next j 
next i 
for i = 1 to xknum 
sum = 0 
for j = 1 to studentno 
um = sum + fs(j, i) 
next j 
qxpjf(i) = sum / (j - 1) 
next i 
'以下程序段(duàn)用(yòng)于求各(gè)班平(píng)均分 
for j = 1 to 4 
for i = 1 to studentno 
ifbj(i) = j + 2 then 
bjrs(j) = bjrs(j) + 1 
for k = 1 to xknum 
pjf3(j, k) = pjf3(j, k) + fs(i, k) 
next k 
end if 
next i 
next j 
for j = 1 to 4 
for i = 1 to 6 
pjf3(j, i) = pjf3(j, i) / bjrs(j) 
next i 
next j 
'寫入(rù)各(gè)班各科平均(jun1)分 
sheets("平(píng)均(jun1)分").select 
for i = 1 to 4 
for j = 1 to 6 
activesheet.cells(i + 2, j + 1) = pjf3(i, j) 
next j 
next i 
'寫(xiě)入(rù)全校(xiào)各科平均分 
i = 7 
for j = 1 to 6 
activesheet.cells(i, j + 1) = qxpjf(j) 
next j 
end sub