久久99精品久久久久久琪琪,久久人人爽人人爽人人片亞洲,熟妇人妻无码中文字幕,亚洲精品无码久久久久久久

vba自定義函數(shù)小結(jié)五篇范文

時間:2019-05-13 17:38:38下載本文作者:會員上傳
簡介:寫寫幫文庫小編為你整理了多篇相關(guān)的《vba自定義函數(shù)小結(jié)》,但愿對你工作學(xué)習(xí)有幫助,當(dāng)然你在寫寫幫文庫還可以找到更多《vba自定義函數(shù)小結(jié)》。

第一篇:vba自定義函數(shù)小結(jié)

小結(jié):

函數(shù)參數(shù)前面標(biāo)記byval,實現(xiàn)的是實參與形參之間的值傳遞,即形參具有了實參的值或者說建立了一個實參的副本給了形參,這樣對形參的操作不會影響實參;

函數(shù)參數(shù)前面標(biāo)記byref,實現(xiàn)的是實參與形參之間的引用傳遞,這樣對形參的操作會影響實參,或者說對形參的操作等同于對實參的操作;

在函數(shù)內(nèi)部使用“r=形參”,實現(xiàn)的是把形參的副本給r,在函數(shù)中對r操作不會影像形參,如果使用“set r=形參”,那么對r的操作會影響形參,這里實現(xiàn)的效果是r只是形參的一個別名而已,所以對r的操作等同于對形參的操作。

在函數(shù)中形參前面不標(biāo)記byref和byval,默認(rèn)是引用傳遞byref,但是這種情況下如果實參是excel中worksheet的range區(qū)域,則默認(rèn)是值傳遞。

有時調(diào)試結(jié)果不符合預(yù)期,比如值傳遞,對””r=形參”中的r操作,居然影響形參了,這可能是由于excel一時程序錯亂導(dǎo)致,關(guān)閉重啟就好了。

Public Function tjbcf(rng)

r = rng

'Set r = rng'注意帶著set是錯誤的 k = 0 If UBound(r, 1)> 1 And UBound(r, 2)= 1 Then For i = 1 To UBound(r, 1)f = 0 For j = 1 To i1 If r(1, i)= r(1, j)Then f = 1 Exit For End If Next j If f = 0 And r(1, i)<> “" Then k = k + 1 End If Next i End If

If UBound(r, 1)> 1 And UBound(r, 2)> 1 Then For i = 1 To UBound(r, 1)For j = 1 To UBound(r, 2)If r(i, j)= ”“ Then f = 1 GoTo kk End If f = 0 For m = 1 To i1 If r(i, j)= r(i, n)Then f = 1 GoTo kk End If Next n kk: If f = 0 Then k = k + 1 End If Next j Next i End If

tjbcf = k

End Function

Public Function getnum(str, m)ss = ”“ For i = m To Len(str)If InStr(”0123456789.“, Mid(str, i, 1))<> 0 Then ss = ss & Mid(str, i, 1)Else GoTo kk End If Next i kk: getnum = Val(ss)'注意是val不是value,在sheet中是value函數(shù),在vb中則是val函數(shù) End Function Public Function getnum2(str, m)ss = ”“ f = 0 For i = m To Len(str)If InStr(”0123456789.“, Mid(str, i, 1))<> 0 Then ss = ss & Mid(str, i, 1)Else If f = 1 And ss <> ”“ Then GoTo kk End If f = 1 End If Next i kk: getnum2 = Val(ss)End Function

Public Function NewMmult(a, b)

a1 = a

'把range a的值賦給a1,a是幾行幾列的range,a1就是 幾行幾列的數(shù)組。注意a1是一個variant數(shù)組,即a1中的不同元素可以屬性不同,a1中某個元素是字符,另一個可以是整數(shù)。

b1 = b

'把range b的值賦給b1 For i = 1 To UBound(a1, 1)

' UBound(a1, 1)指的是數(shù)組a1第1維度的大小,即a1的行數(shù) For j = 1 To UBound(a1, 2)

' UBound(a1, 2)指的是數(shù)組a1第2維度的大小,即a1的列數(shù) If a1(i, j)= ”“ Then

'判斷a1(i,j)是不是空白,如果是,那就賦0值。a1(i, j)= 0 End If Next j Next i

For i = 1 To UBound(b1, 1)For j = 1 To UBound(b1, 2)If b1(i, j)= ”“ Then b1(i, j)= 0 End If Next j Next i

NewMmult = Application.MMult(a1, b1)

End Function

Public Function sim(str1, str2)

If Len(str2)= 0 Then

sim = 0

GoTo kk

End If

sim = 0

For i = 1 To Len(str2)

If InStr(str1, Mid(str2, i, 1))<> 0 Then

sim = sim + 1

End If

Next i

sim = sim / Len(str2)kk: End Function Public Function sima(ByVal str1, ByVal str2)

If Len(str2)= 0 Then

sima = 0

GoTo kk

End If

sima = 0

l = Len(str2)

For i = 1 To Len(str2)

If InStr(str1, Mid(str2, i, 1))<> 0 Then

sima = sima + 1

str1 = Application.WorksheetFunction.Substitute(str1, Mid(str2, i, 1), ”“, 1)

End If

Next i

sima = sima / l kk: End Function

Public Function mcc(rng, rng1, str1, Optional rng2 = ”“, Optional str2, Optional rng3 = ”“, Optional str3, Optional rng4 = ”“, Optional str4, Optional rng5 = ”“, Optional str5)r = rng r1 = rng1 r2 = rng2 r3 = rng3 r4 = rng4 r5 = rng5 mcc = ”“

If Application.CountA(rng2)= 1 Then For i = 1 To UBound(r, 1)

' UBound(a1, 1)指的是數(shù)組a1第1維度的大小,即a1的行數(shù) If Application.WorksheetFunction.And(r1(i, 1)= str1)Then mcc = r(i, 1)GoTo kk End If Next i End If

If Application.CountA(rng3)= 1 Then For i = 1 To UBound(r, 1)

' UBound(a1, 1)指的是數(shù)組a1第1維度的大小,即a1的行數(shù) If Application.WorksheetFunction.And(r1(i, 1)= str1, r2(i, 1)= str2)Then mcc = r(i, 1)GoTo kk End If Next i End If

If Application.CountA(rng4)= 1 Then For i = 1 To UBound(r, 1)

' UBound(a1, 1)指的是數(shù)組a1第1維度的大小,即a1的行數(shù) If Application.WorksheetFunction.And(r1(i, 1)= str1, r2(i, 1)= str2, r3(i, 1)= str3)Then mcc = r(i, 1)GoTo kk End If Next i End If

If Application.CountA(rng5)= 1 Then For i = 1 To UBound(r, 1)

' UBound(a1, 1)指的是數(shù)組a1第1維度的大小,即a1的行數(shù) If Application.WorksheetFunction.And(r1(i, 1)= str1, r2(i, 1)= str2, r3(i, 1)= str3, r4(i, 1)= str4)Then mcc = r(i, 1)GoTo kk End If Next i End If

For i = 1 To UBound(r, 1)

' UBound(a1, 1)指的是數(shù)組a1第1維度的大小,即a1的行數(shù) If Application.WorksheetFunction.And(r1(i, 1)= str1, r2(i, 1)= str2, r3(i, 1)= str3, r4(i, 1)= str4, r5(i, 1)= str5)Then mcc = r(i, 1)GoTo kk End If Next i

kk: End Function

Public Function mccd(rng, rng1, str1, Optional rng2 = ”“, Optional str2, Optional rng3 = ”“, Optional str3, Optional rng4 = ”“, Optional str4, Optional rng5 = ”“, Optional str5)

r = rng r1 = rng1 r2 = rng2 r3 = rng3 r4 = rng4 r5 = rng5 mccd = ”"

If Application.CountA(rng2)= 1 Then

For i = 1 To UBound(r, 2)

' UBound(a1, 1)指的是數(shù)組a1第1維度的大小,即a1的行數(shù) If Application.WorksheetFunction.And(r1(1, i)= str1)Then

mccd = r(1, i)GoTo kk End If Next i End If

If Application.CountA(rng3)= 1 Then For i = 1 To UBound(r, 2)

' UBound(a1, 1)指的是數(shù)組a1第1維度的大小,即a1的行數(shù) If Application.WorksheetFunction.And(r1(1, i)= str1, r2(1, i)= str2)Then mccd = r(1, i)GoTo kk End If Next i End If

If Application.CountA(rng4)= 1 Then For i = 1 To UBound(r, 2)

' UBound(a1, 1)指的是數(shù)組a1第1維度的大小,即a1的行數(shù) If Application.WorksheetFunction.And(r1(1, i)= str1, r2(1, i)= str2, r3(1, i)= str3)Then mccd = r(1, i)GoTo kk End If Next i End If

If Application.CountA(rng5)= 1 Then For i = 1 To UBound(r, 2)

' UBound(a1, 1)指的是數(shù)組a1第1維度的大小,即a1的行數(shù) If Application.WorksheetFunction.And(r1(1, i)= str1, r2(1, i)= str2, r3(1, i)= str3, r4(1, i)= str4)Then mccd = r(1, i)GoTo kk End If Next i End If

For i = 1 To UBound(r, 2)

' UBound(a1, 1)指的是數(shù)組a1第1維度的大小,即a1的行數(shù) If Application.WorksheetFunction.And(r1(1, i)= str1, r2(1, i)= str2, r3(1, i)= str3, r4(1, i)= str4, r5(1, i)= str5)Then mccd = r(1, i)GoTo kk End If Next i

kk: End Function

Public Function nsim(str, rng)'r1 = rng 'r2 = rng 'str1 = str 'str2 = str

v = sima(str, r(1, 1))+ sima(r(1, 1), str2)'str1 = str

‘這里不再需要賦值,因為sima設(shè)置的是值傳遞byval,sima調(diào)用實參str和r(1,1)不影響實參。'str2 = str k = 1 For i = 2 To UBound(r, 1)m =(sima(str, r(i, 1))+ sima(r(i, 1), str))'str1 = str 'str2 = str If v < m Then k = i v = m End If Next i nsim = r(k, 1)End Function

第二篇:VFP-04-06-變量作用域、自定義函數(shù)匯總(定稿)

VFP-04-06變量作用域、自定義函數(shù).doc 8-1 變量作用域、自定義函數(shù)

4.5.3 內(nèi)存變量的作用域

變量的作用域:變量的作范圍。程序由模塊(主、子程序)組成,模塊中有內(nèi)存變量,內(nèi)存變量有作用范圍。變量的作用域,從定義變量處開始,一直向下。

1.定義全局內(nèi)存變量

全局變量既可以是單個變量,也可以是數(shù)組。分別以下列格式定義。

格式1:Public <內(nèi)存變量表> 格式2:Public <數(shù)組名1>(上界1[,上界2[,...])[,?] 功能:定義全局變量。

①<內(nèi)存變量表>中既可含普通變量,也可含數(shù)組。

②全局變量不會自動釋放。只能用release命令顯式釋放,或退出VFP。③VFP命令窗口中定義的變量,默認(rèn)為全局變量。④全局?jǐn)?shù)組的每個元素都是全局的。

第116頁,例 4.35 主程序中使用子程序中定義的全局變量。*文件名Main.prg set talk off clear clear memory &&清除所有內(nèi)存變量 I=2 &&默認(rèn)是私有的 Do ABC ?“主程序中的輸出結(jié)果:” ?“I=”+str(I,2)+“ J=”+str(J,2)set talk on return *---------------------Procedure ABC public J J=I*8 J=J+5 ?“過程中的輸出結(jié)果:” ?“I=”+str(I,2)+“ J=”+str(J,2)return 小提示:要檢測全局變量,請先clear memory以排除干擾。

2.定義局部內(nèi)存變量

(1)什么叫局部?

更小的范圍就是局部。對于一個模塊,更后的部分是局部。對于主程序,子程序是局部。

(2)Private定義局部變量 VFP-04-06變量作用域、自定義函數(shù).doc 8-2 格式1:Private <內(nèi)存變量表> 格式2:Private <數(shù)組名1>(上界1[,上界2[,...])[,?] 功能:定義局部變量。

①未經(jīng)定義的變量,默認(rèn)是局部(Private)的。

③無論全局還是局部變量,無初值的,一律自動賦初值.F.。③局部變量作用域的子模塊擴(kuò)展規(guī)則

Private變量的作用域,通過調(diào)用子模塊而擴(kuò)展到子模塊中。

圖4-20 Private變量作用域子模塊擴(kuò)展規(guī)則

第117頁,例 4.36 子程序中的局部變量,在主程序中找不到。R=100 &&默認(rèn)為Private變量 Do Sub1 &&調(diào)用子程序

?P &&主程序中找不到這個變量 Return *-------------------procedure Sub1 P=2*3.14*R &&主程序中的Private變量,子程序中可用 return 3.Private隱藏內(nèi)存變量的功能

(1)同名變量就近使用規(guī)則(原理)

程序中,對于同名的變量,默認(rèn)使用最近的。因此,①字段變量(因為在當(dāng)前工作區(qū)內(nèi))優(yōu)先于(即隱藏)同名內(nèi)存變量; 注:什么叫隱藏?就是被遮住,看不見,用不上。

圖4-22 字段變量隱藏同名內(nèi)存變量

例如 use student.dbf use student.dbf VFP-04-06變量作用域、自定義函數(shù).doc 8-3 ?學(xué)號 &&結(jié)果是字段變量“學(xué)號”值,如“960106” 學(xué)號=“abcd” &&“=”號賦值,只給內(nèi)存變量賦值 ?學(xué)號 &&結(jié)果還是優(yōu)先使用字段變量

?m.學(xué)號 &&特別用“m.”指明內(nèi)存變量,結(jié)果才是“abcd” ②同一模塊內(nèi),小局部存變量優(yōu)先于(即隱藏)大局部同名內(nèi)存變量;

圖4-23 Private變量隱藏同模塊同名變量

③不同模塊中,子模塊局部內(nèi)存變量優(yōu)先于(即隱藏)主模塊同名內(nèi)存變量。

圖4-26 用Private隱隱藏變量

小提示:主程序中的private變量,子程序同樣可以用private屏蔽。(3)為什么大范圍定義的局部變量,小范圍中再定義為全局變量會出錯? 因為那樣,與Private的隱藏功能相矛盾。

第118頁,例 4.37 子程序中的同名局部變量隱藏主程序中同名變量。R=100 &&默認(rèn)為Private變量 P=10 &&默認(rèn)為Private變量 Do Sub2 &&調(diào)用子程序

?P &&仍是主程序中的值 Return *-------------------procedure Sub2 Private P &&局部變量,主程序中的同名變量被屏蔽 P=2*3.14*R &&主程序中的Private變量,子程序中可用 Return *(5)有沒有不通過子程序擴(kuò)展作用域的變量?

VFP-04-06變量作用域、自定義函數(shù).doc 8-4 有,Local變量,即本地變量。如:Local x,y,z。小提示:采用Local變量,是向C語言靠攏。

4.調(diào)用過程時的數(shù)據(jù)傳遞

教學(xué)提示:VFP的參數(shù)傳遞,過程中默認(rèn)傳址,函數(shù)中默認(rèn)傳值。向過程傳遞數(shù)據(jù),有兩種方法。

(1)利用Private變量的作用域擴(kuò)展規(guī)則,不傳而傳

過程中,可以直接使用主程序中的Private變量,不必傳。第118頁,例 4.38 計算矩形面積。G=8 &&長 K=6 &&寬 mj=0 &&面積 do sub3 ?Mj return *--------------procedure sub3 mj=G*K return(2)在過程第一句用Parameters接收參數(shù)

主程序中傳出參數(shù)格式:Do <過程名> With <實際參數(shù)表> 子程序中接收參數(shù)格式: Parameters <內(nèi)存變量表> 說明:

①子程序中,Parameters必須是第一句。Parameters變量是Private變量。②傳值:Parameters后的變量與主程序中對應(yīng)的實際參數(shù)無關(guān)。

③傳引用:Parameters后的變量與主程序中對應(yīng)的實際參數(shù)是同一個變量,名稱可能不同而已,同時變化。

④引用隱藏實參規(guī)則

子模塊中,引用參數(shù)隱藏實際參數(shù),是因為引用參數(shù)與實際參數(shù)是同一個變量,只是在子模塊中另取了一個名字(別名)而已。因此,原來的實際參數(shù)被隱藏,才不會混亂,包括實際參數(shù)是Public變量的情況。

⑤如何決定傳值、傳地址?由實際參數(shù)決定。過程的實際參數(shù)默認(rèn)引用。要傳值須實際參數(shù)加“()”,或者寫成表達(dá)式。VFP-04-06變量作用域、自定義函數(shù).doc 8-5

圖4-27 傳值與傳引用

第119頁,例 4.39 寫程序運(yùn)行結(jié)果。set talk off x=1 y=3 do sub4 with x,(y),5 ?x,y return *----------------Procedure sub4 parameters a,b,c a=a+b+c b=a+b-c return &&答: 9, 3 第120頁,例 4.40 利用一個過程計算矩形面積,要求在主程序輸出該面積值。set talk off clear input “矩形長:” to L input “矩形寬:” to W S=0 do Area with L,W,S ?“矩形面積:”,S return *--------------Procedure Area Parameters C,K,M M=C*K return

4.5.4 自定義函數(shù) VFP-04-06變量作用域、自定義函數(shù).doc 8-6 1.自定義函數(shù)的結(jié)構(gòu)

自定義函數(shù)實際上是一個過程,只不過其Return語句后帶有表達(dá)式,能向主函數(shù)返回值。

格式:

Function <函數(shù)名> [Parameters <形式參數(shù)表>] <語句序列> Return [<表達(dá)式>] 說明:

①缺省[<表達(dá)式>]返回.T.。

②與過程一樣,自定義函數(shù),可以單獨以同名程序文件存儲,也可以存入過程文件中。

2.自定義函數(shù)的調(diào)用

小提示:過程中叫實際參數(shù)的,函數(shù)中叫自變量。格式:[[因變量]=] <函數(shù)名>(自變量表)說明:

函數(shù)查找規(guī)則

調(diào)用函數(shù)時,先在內(nèi)部函數(shù)中找;找不到再到打開的過程文件中找;再找不到,在當(dāng)前文件夾中找;再找不到,出錯。

①若自定義函數(shù)與內(nèi)部函數(shù)同名,將不被找到,用不到。②參數(shù)表要與自變量表相對應(yīng),包括類型和個數(shù)。

③自變量表中,可以是變量,也可以是表達(dá)式。自變量默認(rèn)傳值。要傳引用,須在自變量前面加“@”,或SET UDFPARMS TO REFERENCE設(shè)置默認(rèn)為傳引用。

④函數(shù)可以當(dāng)過程用,調(diào)用格式為“do <函數(shù)名> with 自變量表”。但要注意,當(dāng)過程用時,默認(rèn)傳引用,因為過程默認(rèn)傳引用;且放棄返回值。

小提示:自變量默認(rèn)傳值,是向C語言靠攏。小提示:過程默認(rèn)傳引用,函數(shù)默認(rèn)傳值。第122頁,例 4.41 定義一個函數(shù),將day()日期轉(zhuǎn)成“公元 年 月 日”格式。Y=DA()?Y return *-------------Function DA D=“公元”+LTRIM(STR(YEAR(DATE())))+“年” D=D+LTRIM(STR(MONTH(DATE())))+“月” D=D+LTRIM(STR(DAY(DATE())))+“日” Return D 第122頁,例 4.42 用自定義函數(shù)計算組合數(shù)。VFP-04-06變量作用域、自定義函數(shù).doc 8-7 m!

n!(m?n)!y=c(5,3)?y return *-------------------Function FAC &&階乘factor parameters x f=1 for k=1 to x f=f*k endfor return f *-------------------Function C &&組合數(shù)conbination parameters m,n y=int(FAC(m)/(FAC(n)*FAC(m-n)))return y C(m,n)?*附加 4.5.5 自定義函數(shù)的括號參數(shù)格式

“()”在VFP中是間接引用符,有傳值之意。

1.自函數(shù)的“()式”結(jié)構(gòu)

格式:

Function <函數(shù)名>([<參數(shù)表>])<語句序列> Return [<表達(dá)式>] 說明:這是自定義函數(shù)的另一種格式。它只是將Function行和Parameter行合并成一行,其它并無差別;其調(diào)用方式也沒有區(qū)別。

小提示:表單自定義函數(shù)不能用括號參數(shù)格式,故一般不學(xué)、不用。例 自定義函數(shù)fun1(x,y,z),分別將其當(dāng)過程和“()式”函數(shù)調(diào)用。A=123 B=234 C=“abc” clear do fun1 with A,(B),C &&當(dāng)過程用,默認(rèn)傳引用,但B傳值 ?“A=”,A,“B=”,B,“C=”,C D=fun1(A,@B,@C)&&當(dāng)函數(shù)用,默認(rèn)傳值,但B和C傳引用 ?“D=”,D Return *-------------------VFP-04-06變量作用域、自定義函數(shù).doc 8-8 Function fun1(X,Y,Z)x=x+10000 y=y+10000 z=z+“12345” return X+Y

第三篇:小結(jié)函數(shù)對稱性

小 結(jié) 函 數(shù) 對 稱 性

數(shù)學(xué)組

劉宏博

函數(shù)是中學(xué)數(shù)學(xué)教學(xué)的主線,是中學(xué)數(shù)學(xué)的核心內(nèi)容,也是整個高中數(shù)學(xué)的基礎(chǔ).函數(shù)的性質(zhì)是競賽和高考的重點與熱點,函數(shù)的對稱性是函數(shù)的一個基本性質(zhì),對稱關(guān)系不僅廣泛存在于數(shù)學(xué)問題之中,而且利用對稱性往往能更簡捷地使問題得到解決,對稱關(guān)系還充分體現(xiàn)了數(shù)學(xué)之美.本文擬通過函數(shù)自身的對稱性和不同函數(shù)之間的對稱性這兩個方面來小結(jié)與函數(shù)對稱有關(guān)的性質(zhì).一、函數(shù)自身的對稱性

定理1.函數(shù) y = f(x)的圖像關(guān)于點A(a ,b)對稱的充要條件是

f(x)+ f(2a-x)= 2b 證明:(必要性)設(shè)點P(x ,y)是y = f(x)圖像上任一點,∵點P(x ,y)關(guān)于點A(a ,b)的對稱點P‘(2a-x,2b-y)也在y = f(x)圖像上,∴ 2b-y = f(2a-x)即y + f(2a-x)=2b故f(x)+ f(2a-x)= 2b,必要性得證.(充分性)設(shè)點P(x0,y0)是y = f(x)圖像上任一點,則y0 = f(x0)∵ f(x)+ f(2a-x)=2b∴f(x0)+ f(2a-x0)=2b,即2b-y0 = f(2a-x0).故點P‘(2a-x0,2b-y0)也在y = f(x)圖像上,而點P與點P‘關(guān)于點A(a ,b)對稱,充分性得征.推論:函數(shù) y = f(x)的圖像關(guān)于原點O對稱的充要條件是f(x)+ f(-x)= 0 定理2.函數(shù) y = f(x)的圖像關(guān)于直線x = a對稱的充要條件是

f(a +x)= f(a-x)即f(x)= f(2a-x)(證明留給讀者)推論:函數(shù) y = f(x)的圖像關(guān)于y軸對稱的充要條件是f(x)= f(-x)定理3.①若函數(shù)y = f(x)圖像同時關(guān)于點A(a ,c)和點B(b ,c)成中心對稱(a≠b),則y = f(x)是周期函數(shù),且2| a-b|是其一個周期.②若函數(shù)y = f(x)圖像同時關(guān)于直線x = a 和直線x = b成軸對稱(a≠b),則y = f(x)是周期函數(shù),且2| a-b|是其一個周期.③若函數(shù)y = f(x)圖像既關(guān)于點A(a ,c)成中心對稱又關(guān)于直線x =b成軸對稱(a≠b),則y = f(x)是周期函數(shù),且4| a-b|是其一個周期.①②的證明留給讀者,以下給出③的證明: ∵函數(shù)y = f(x)圖像既關(guān)于點A(a ,c)成中心對稱,∴f(x)+ f(2a-x)=2c,用2b-x代x得: f(2b-x)+ f [2a-(2b-x)] =2c………………(*)又∵函數(shù)y = f(x)圖像直線x =b成軸對稱,∴ f(2b-x)= f(x)代入(*)得:

f(x)= 2c-f [2(a-b)+ x]…………(**),用2(a-b)-x代x得 f [2(a-b)+ x] = 2c-f [4(a-b)+ x]代入(**)得:

f(x)= f [4(a-b)+ x],故y = f(x)是周期函數(shù),且4| a-b|是其一個周期.二、不同函數(shù)之間的對稱性

定理4.函數(shù)y = f(x)與y = 2b-f(2a-x)的圖像關(guān)于點A(a ,b)成中心對稱.定理5.①函數(shù)y = f(x)與y = f(2a-x)的圖像關(guān)于直線x = a成軸對稱.②函數(shù)y = f(x)與a-x = f(a-y)的圖像關(guān)于直線x +y = a成軸對稱.③函數(shù)y = f(x)與x-a = f(y + a)的圖像關(guān)于直線x-y = a成軸對稱.定理4與定理5中的①②證明留給讀者,現(xiàn)證定理5中的③

設(shè)點P(x0 ,y0)是y = f(x)圖像上任一點,則y0 = f(x0)。記點P(x ,y)關(guān)于直線x-y = a的軸對稱點為P‘(x1,y1),則x1 = a + y0 , y1 = x0-a,∴x0 = a + y1 , y0= x1-a 代入y0 = f(x0)之中得x1-a = f(a + y1)∴點P‘(x1,y1)在函數(shù)x-a = f(y + a)的圖像上.同理可證:函數(shù)x-a = f(y + a)的圖像上任一點關(guān)于直線x-y = a的軸對稱點也在函數(shù)y = f(x)的圖像上。故定理5中的③成立.推論:函數(shù)y = f(x)的圖像與x = f(y)的圖像關(guān)于直線x = y 成軸對稱.三、函數(shù)對稱性應(yīng)用舉例 例1:定義在R上的非常數(shù)函數(shù)滿足:f(10+x)為偶函數(shù),且f(5-x)= f(5+x),則f(x)一定是()

(B)是偶函數(shù),但不是周期函數(shù)

(D)是奇函數(shù),但不是周期函數(shù)(A)是偶函數(shù),也是周期函數(shù)(C)是奇函數(shù),也是周期函數(shù)

解:∵f(10+x)為偶函數(shù),∴f(10+x)= f(10-x).∴f(x)有兩條對稱軸 x = 5與x =10,因此f(x)是以10為其一個周期的周期函數(shù),∴x =0即y軸也是f(x)的對稱軸,因此f(x)還是一個偶函數(shù).故選(A)

例2.設(shè)f(x)是定義在R上的偶函數(shù),且f(1+x)= f(1-x),當(dāng)-1≤x≤0時,f(x)= -1x,則f(8.6)= _________

2解:∵f(x)是定義在R上的偶函數(shù)∴x = 0是y = f(x)對稱軸;

又∵f(1+x)= f(1-x)∴x = 1也是y = f(x)對稱軸。故y = f(x)是以2為周期的周期函數(shù),∴f(8.6)= f(8+0.6)= f(0.6)= f(-0.6)= 0.3 例3.設(shè)f(x)是定義在R上的奇函數(shù),且f(x+2)= -f(x),當(dāng)0≤x≤1時,f(x)= x,則f(7.5)=()

(A)

0.5(B)-0.5

(C)1.5

(D)-1.5 解:∵y = f(x)是定義在R上的奇函數(shù),∴點(0,0)是其對稱中心;

又∵f(x+2)= -f(x)= f(-x),即f(1+ x)= f(1-x),∴直線x = 1是y = f(x)對稱軸,故y = f(x)是周期為2的周期函數(shù).∴f(7.5)= f(8-0.5)= f(-0.5)= -f(0.5)=-0.5 故選(B)

第四篇:vba單元格區(qū)域引用方式的小結(jié)

vba單元格區(qū)域引用方式的小結(jié)

在使用ExcelVBA進(jìn)行編程時,我們通常需要頻繁地引用單元格區(qū)域,然后再使用相應(yīng)的屬性和方法對區(qū)域進(jìn)行操作。所謂單元格區(qū)域,指的是單個的單元格、或者是由多個單元格組成的區(qū)域、或者是整行、整列等。下面,我們設(shè)定一些情形,以問答的形式對引用單元格區(qū)域的方式進(jìn)行歸納。------------------問題一:在VBA代碼中,如何引用當(dāng)前工作表中的單個單元格(例如引用單元格C3)? 回答:可以使用下面列舉的任一方式對當(dāng)前工作表中的單元格(C3)進(jìn)行引用。(1)Range(“C3”)(2)[C3](3)Cells(3, 3)(4)Cells(3, “C”)(5)Range(“C4”).Offset(-1)Range(“D3”).Offset(,-1)Range(“A1”).Offset(2, 2)(6)若C3為當(dāng)前單元格,則可使用:ActiveCell(7)若將C3單元格命名為“Range1”,則可使用:Range(“Range1”)或[Range1](8)Cells(4, 3).Offset(-1)(9)Range(“A1”).Range(“C3”)------------------問題二:在VBA代碼中,我要引用當(dāng)前工作表中的B2:D6單元格區(qū)域,有哪些方式? 回答:可以使用下面列舉的任一方式對當(dāng)前工作表中單元格區(qū)域B2:D6進(jìn)行引用。(1)Range(“B2:D6”)(2)Range(“B2”, “D6”)(3)[B2:D6](4)Range(Range(“B2”), Range(“D6”))(5)Range(Cells(2, 2), Cells(6, 4))(6)若將B2:D6區(qū)域命名為“MyRange”,則又可以使用下面的語句引用該區(qū)域: ① Range(“MyRange”)② [MyRange]

(7)Range(“B2”).Resize(5, 3)(8)Range(“A1:C5”).Offset(1, 1)(9)若單元格B2為當(dāng)前單元格,則可使用語句:Range(ActiveCell, ActiveCell.Offset(4, 2))(10)若單元格D6為當(dāng)前單元格,則可使用語句:Range(“B2”, ActiveCell)------------------問題三:在VBA代碼中,如何使用變量實現(xiàn)對當(dāng)前工作表中不確定單元格區(qū)域的引用?

回答:有時,我們需要在代碼中依次獲取工作表中特定區(qū)域內(nèi)的單元格,這通常可以采取下面的幾種方式:

(1)Range(“A” & i)

(2)Range(“A” & i & “:C” & i)(3)Cells(i,1)(4)Cells(i,j)其中,i、j為變量,在循環(huán)語句中指定i和j的范圍后,依次獲取相應(yīng)單元格。------------------問題四:在VBA代碼中,如何擴(kuò)展引用當(dāng)前工作表中的單元格區(qū)域? 回答:可以使用Resize屬性,例如:

(1)ActiveCell.Resize(4, 4),表示自當(dāng)前單元格開始創(chuàng)建一個4行4列的區(qū)域。(2)Range(“B2”).Resize(2, 2),表示創(chuàng)建B2:C3單元格區(qū)域。(3)Range(“B2”).Resize(2),表示創(chuàng)建B2:B3單元格區(qū)域。(4)Range(“B2”).Resize(, 2),表示創(chuàng)建B2:C2單元格區(qū)域。

如果是在一個單元格區(qū)域(如B3:E6),或一個命名區(qū)域中(如將單元格區(qū)域B3:E6命名為“MyRange”)使用Resize屬性,則只是相對于單元格區(qū)域左上角單元格擴(kuò)展區(qū)域,例如:

代碼Range(“C3:E6”).Resize(, 2),表示單元格區(qū)域C3:D6,并且擴(kuò)展的單元格區(qū)域可不在原單元格區(qū)域內(nèi)。

因此,可以知道Resize屬性是相對于當(dāng)前活動單元格或某單元格區(qū)域中左上角單元格按指定的行數(shù)或列數(shù)擴(kuò)展單元格區(qū)域。

------------------問題五:在VBA代碼中,如何在當(dāng)前工作表中基于當(dāng)前單元格區(qū)域或指定單元格區(qū)域處理其它單元格區(qū)域?

回答:可以使用Offset屬性,例如:

(1)Range(“A1”).Offset(2, 2),表示單元格C3。

(2)ActiveCell.Offset(, 1),表示當(dāng)前單元格下一列的單元格。(3)ActiveCell.Offset(1),表示當(dāng)前單元格下一行的單元格。

(4)Range(“C3:D5”).Offset(, 1),表示單元格區(qū)域D3:E5,即將整個區(qū)域偏移一列。

從上面的代碼示例可知,Offset屬性從所指定的單元格開始按指定的行數(shù)和列數(shù)偏移,從而到達(dá)目的單元格,但偏移的行數(shù)和列數(shù)不包括指定單元格本身。

------------------問題六:在VBA代碼中,如何在當(dāng)前工作表中引用交叉區(qū)域? 回答:可以使用Intersect方法,例如:

Intersect(Range(“C3:E6”), Range(“D5:F8”)),表示單元格區(qū)域D5:E6,即單元格區(qū)域C3:E6與D5:F8相重迭的區(qū)域。

------------------問題七:在VBA代碼中,如何在當(dāng)前工作表中引用多個區(qū)域? 回答:

(1)可以使用Union方法,例如:

Union(Range(“C3:D4”), Range(“E5:F6”)),表示單元格區(qū)域C3:D4和E5:F6所組成的區(qū)域。Union方法可以將多個非連續(xù)區(qū)域連接起來成為一個區(qū)域,從而可以實現(xiàn)對多個非連續(xù)區(qū)域一起進(jìn)行操作。

(2)也可以使用下面的代碼:

Range(“C3:D4, E5:F6”)或[C3:D4, E5:F6] 注意:Range(“C3:D4”, “F5:G6”),表示單元格區(qū)域C3:G6,即將兩個區(qū)域以第一個區(qū)域左上角單元格為起點,以第二個區(qū)域右下角單元格為終點連接成一個新區(qū)域。

同時,在引用區(qū)域后使用Rows屬性和Columns屬性時,注意下面代碼的區(qū)別: ①Range(“C3:D4”, “F8:G10”).Rows.Count,返回的值為8;

②Range(“C3:D4,F8:G10”).Rows.Count,返回的值為2,即只計算第一個單元格區(qū)域。------------------問題八:在VBA代碼中,如何引用當(dāng)前工作表中活動單元格或指定單元格所在的區(qū)域(當(dāng)前區(qū)域)? 回答:可以使用CurrentRegion屬性,例如:

(1)ActiveCell.CurrentRegion,表示活動單元格所在的當(dāng)前區(qū)域。(2)Range(“D5”).CurrentRegion,表示單元格D5所在的當(dāng)前區(qū)域。

當(dāng)前區(qū)域是指周圍由空行或空列所圍成的區(qū)域。該屬性的詳細(xì)使用參見《CurrentRegion屬性示例》一文。[NextPage]------------------問題九:在VBA代碼中,如何引用當(dāng)前工作表中已使用的區(qū)域? 回答:可以使用UsedRange屬性,例如:

(1)Activesheet.UsedRange,表示當(dāng)前工作表中已使用的區(qū)域。

(2)Worksheets(“sheet1”).UsedRange,表示工作表sheet1中已使用的區(qū)域。

與CurrentRegion屬性不同的是,該屬性代表工作表中已使用的單元格區(qū)域,包括顯示為空行,但已進(jìn)行過格式的單元格區(qū)域。該屬性的詳細(xì)使用參見《解析UsedRange屬性》一文。

------------------問題十:如何在單元格區(qū)域內(nèi)指定特定的單元格? 回答:可以使用Item屬性,例如:

(1)Range(“A1:B10”).Item(5,3)指定單元格C5,這個單元格處于以區(qū)域中左上角單元格A1(即區(qū)域中第1行第1列的單元格)為起點的第5行第3列。因為Item屬性為默認(rèn)屬性,因此也可以簡寫為:Range(“A1:B10”)(5,3)。

如果將A1:B10區(qū)域命名為”MyRange”,那么Range(“MyRange”)(5,3)也指定單元格C5。

(2)Range(“A1:B10”)(12,13)指定單元格M12,即用這種方式引用單元格,該單元格不必一定要包含在區(qū)域內(nèi)。

同時,也不需要索引數(shù)值是正值,例如: ① Range(“D4:F6”)(0,0)代表單元格C3; ② Range(“D4:F6”)(-1,-2)代表單元格A2。而Range(“D4:F6”)(1,1)代表單元格D4。(3)也可以在單元格區(qū)域中循環(huán),例如:

Range(“D4:F6”)(2,2)(3,4)代表單元格H7,即該單元格位于作為左上角單元格E5的第3行第4列(因為E5是開始于區(qū)域中左上角單元格D4起的第2行第2列)。

(4)也能使用一個單個的索引數(shù)值進(jìn)行引用。計數(shù)方式為從左向右,即在區(qū)域中的第一行開始從左向右計數(shù),第一行結(jié)束后,然后從第二行開始從左到右接著計數(shù),依次類推。(注:從區(qū)域中第一行第一個單元格開始計數(shù),當(dāng)?shù)谝恍薪Y(jié)束時,轉(zhuǎn)入第二行最左邊的單元格,這樣按一行一行從左向右依次計數(shù)。以單元格區(qū)域中第1個單元格開始,按上述規(guī)則依次為第2個單元格、第3個單元格?.等等),例如:

Range(“A1:B2”)(1)代表單元格A1; Range(“A1:B2”)(2)代表單元格B1; Range(“A1:B2”)(3)代表單元格A2; Range(“A1:B2”)(4)代表單元格B2。

這種方法可在工作表中連續(xù)向下引用單元格(即不一定是在單元格區(qū)域內(nèi),但在遵循相同的規(guī)律),例如:

Range(“A1:B2”)(5)代表單元格A3; Range(“A1:B2”)(14)代表單元格B7,等等。也可以使用單個的負(fù)數(shù)索引值。這種使用單個索引值的方法對遍歷列是有用的,例如,Range(“D4”)(1)代表單元格D4,Range(“D4”)(2)代表單元格D5,Range(“D4”)(11)代表單元格D14,等等。同理,稍作調(diào)整后也可遍歷行,例如:

Range(“D4”).Columns(2)代表單元格E4,Range(“D4”).Columns(5)指定單元格H4,等等。(5)當(dāng)與對象變量配合使用時,Item屬性能提供簡潔并有效的代碼,例如: Set rng = Worksheets(1).[a1] 定義了對象變量后,像單元格方法一樣,Item屬性允許使用兩個索引數(shù)值引用工作表中的任一單元格,例如,rng(3,4)指定單元格D3。(By Chip Pearson)------------------問題十一:在VBA代碼中,如何引用當(dāng)前工作表中的整行或整列? 回答:見下面的示例代碼:

(1)Range(“C:C”).Select,表示選擇C列。Range(“C:E”).Select,表示選擇C列至E列。(2)Range(“1:1”).Select,表示選擇第一行。Range(“1:3”).Select,表示選擇第1行至第3行。(3)Range(“C:C”).EntireColumn,表示C列; Range(“D1”).EntireColumn,表示D列。

同樣的方式,也可以選擇整行,然后可以使用如AutoFit方法對整列或整行進(jìn)行調(diào)整。------------------問題十二:在VBA代碼中,如何引用當(dāng)前工作表中的所有單元格? 回答:可以使用下面的代碼:

(1)Cells,表示當(dāng)前工作表中的所有單元格。

(2)Range(Cells(1, 1), Cells(Cells.Rows.Count, Cells.Columns.Count)),其中Cells.Rows表示工作表所有行,Cells.Columns表示工作表所有列。

------------------問題十三:在VBA代碼中,如何引用工作表中的特定單元格區(qū)域?

回答:在工作表中,您可能使用過“定位條件”對話框。可以通過選擇菜單“編輯——定位”,單擊“定位”對話框中的“定位條件”按鈕顯示該對話框。這個對話框可以允許用戶選擇特定的單元格。例如:

(1)Worksheets(“sheet1”).Cells.SpecialCells(xlCellTypeAllFormatConditions),表示工作表sheet1中由帶有條件格式的單元格所組成的區(qū)域。

(2)ActiveCell.CurrentRegion.SpecialCells(xlCellTypeBlanks),表示當(dāng)前工作表中活動單元格所在區(qū)域中所有空白單元格所組成的區(qū)域。

當(dāng)然,還有很多常量和值的組合,可以讓您實現(xiàn)特定單元格的查找并引用。參見《探討在工作表中找到最后一行》一文。

------------------問題十四:在VBA代碼中,如何引用其它工作表或其它工作簿中的單元格區(qū)域?

回答:要引用其它工作表或其它工作簿中的單元格區(qū)域,只需在單元格對象前加上相應(yīng)的引用對象即可,例如:

(1)Worksheets(“Sheet3”).Range(“C3:D5”),表示引用工作表sheet3中的單元格區(qū)域C3:D5。(2)Workbooks(“MyBook.xls”).Worksheets(“sheet1”).Range(“B2”),表示引用MyBook工作簿中工作表Sheet1上的單元格B2。

------------------問題十五:還有其它的一些情形嗎? 回答:列舉如下:

(1)Cells(15),表示單元格O1,即可在Cells屬性中指定單元格數(shù)字來選擇單元格,其計數(shù)順序為自左至右、從上到下,又如Cells(257),表示單元格B1。

(2)Cells(, 256),表示單元格IV1,但是如果Cells(, 257),則會返回錯誤。

------------------結(jié)語

我們用VBA對Excel進(jìn)行處理,一般是對其工作表中的數(shù)據(jù)進(jìn)行處理,因此,引用單元格區(qū)域是ExcelVBA編程中最基本的操作之一,只有確定了所處理的單元格區(qū)域,才能使用相應(yīng)的屬性和方法進(jìn)行下一步的操作。

上面列舉了一些引用單元格區(qū)域的情形和方式,可以看出,引用單元格區(qū)域有很多方式,有一些可能不常用,可以根據(jù)工作表的所處的環(huán)境和個人編程習(xí)慣進(jìn)行選擇使用。

當(dāng)然,在編寫程序時,也可能會將上面的一些屬性聯(lián)合使用,以達(dá)到選取特定操作對象的目的,例如Offset屬性、Resize屬性、CurrentRegion屬性、UsedRange屬性等的組合。文章標(biāo)簽: ExcelVBA引用單元格

第五篇:第5章 視圖、存儲過程和用戶自定義函數(shù)復(fù)習(xí)題范文

第5章 視圖、存儲過程和用戶自定函數(shù)

1.什么是基本表?什么是視圖?兩者的區(qū)別和聯(lián)系是什么?

答:

基本表是本身獨立存在的表,在 sQL 中一個關(guān)系就對應(yīng)一個表。視圖是從一個或幾個基本表導(dǎo)出的表。視圖本身不獨立存儲在數(shù)據(jù)庫中,是一個虛表。即數(shù)據(jù)庫中只存放視圖的定義而不存放視圖對應(yīng)的數(shù)據(jù),這些數(shù)據(jù)仍存放在導(dǎo)出視圖的基本表中。視圖在概念上與基本表等同,用戶可以如同基本表那樣使用視圖,可以在視圖上再定義視圖。.試述視圖的優(yōu)點。

(l)視圖能夠簡化用戶的操作;(2)視圖使用戶能以多種角度看待同一數(shù)據(jù);(3)視圖對重構(gòu)數(shù)據(jù)庫提供了一定程度的邏輯獨立性;(4)視圖能夠?qū)C(jī)密數(shù)據(jù)提供安全保護(hù)。.所有的視圖是否都可以更新?為什么?

答:

不是。視圖是不實際存儲數(shù)據(jù)的虛表,因此對視圖的更新,最終要轉(zhuǎn)換為對基本表的更新。因為有些視圖的更新不能惟一有意義地轉(zhuǎn)換成對相應(yīng)基本表的更新,所以,并不是所有的視圖都是可更新的.4 .哪類視圖是可以更新的?哪類視圖是不可更新的?各舉一例說明。

答:基本表的行列子集視圖一般是可更新的。若視圖的屬性來自集函數(shù)、表達(dá)式,則該視圖肯定是不可以更新的。

5.教材P89習(xí)題1-5。

下載vba自定義函數(shù)小結(jié)五篇范文word格式文檔
下載vba自定義函數(shù)小結(jié)五篇范文.doc
將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
點此處下載文檔

文檔為doc格式


聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔(dān)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進(jìn)行舉報,并提供相關(guān)證據(jù),工作人員會在5個工作日內(nèi)聯(lián)系你,一經(jīng)查實,本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

相關(guān)范文推薦

    SQL Sever 2005教案第13章 存儲過程及自定義函數(shù)

    什么是存儲過程,在存儲在服務(wù)器上的T-SQL語句的命名集合,是封裝性任務(wù)的方法,支持變量及條件的編程。 SQL Server的存儲過程與其他編程語言中的過程(包括函數(shù))類似,可以包含數(shù)據(jù)......

    可測函數(shù)小結(jié)

    可測函數(shù) (一)可測函數(shù)的定義 1、在可測函數(shù)定義的學(xué)習(xí)過程中,對于可測函數(shù)的表示:?a∈R, 有{x | > a}可測,則f(x) 可測 ;用簡單間函數(shù)列來表示:有簡單函數(shù)列{φn},f(x) 滿足limφn......

    函數(shù)應(yīng)用小結(jié)(推薦閱讀)

    函數(shù)應(yīng)用學(xué)案 一、深刻領(lǐng)會函數(shù)與方程的關(guān)系,才能有效的解決函數(shù)與方程的問題,而函數(shù)的零點與方程的根的關(guān)系,二分法求方程的近似解是基礎(chǔ). 1.方程的根與函數(shù)的零點:方程f(x)=0有實......

    復(fù)變函數(shù)小結(jié)

    復(fù)變函數(shù)小結(jié) 第一章 復(fù)變函數(shù) 1)掌握復(fù)數(shù)的定義(引入),知道復(fù)數(shù)的幾何意義(即復(fù)數(shù)可看成復(fù)數(shù)平面的一個點也可以表示為復(fù)數(shù)平面上的向量) 2) 掌握 復(fù)數(shù)的直角坐標(biāo)表示與三......

    EXCEL VBA工作表操作全能方法小結(jié)

    EXCEL VBA工作表操作全能方法小結(jié) [示例04-01]增加工作表(Add方法) Sub AddWorksheet() MsgBox "在當(dāng)前工作簿中添加一個工作表" Worksheets.Add MsgBox "在當(dāng)前工作簿......

    Office VBA 中的日期和時間操作小結(jié)

    Office VBA 中的日期和時間操作小結(jié) 1、 獲取日期變量中的日期部分或時間部分的方法; a) Today=CDate(Format$(Now, "yyyy-mm-dd"))‘獲取今日,得到一個只有日期沒有時間的日......

    EXCEL VBA工作表操作全能方法小結(jié)

    EXCELVBA工作表操作全能方法小結(jié)[示例04-01]增加工作表(Add方法) SubAddWorksheet() MsgBox"在當(dāng)前工作簿中添加一個工作表" Worksheets.Add MsgBox"在當(dāng)前工作簿中的工作表......

    青春自定義(精選五篇)

    青春,簡簡單單的一個詞卻具有很多的寓意;現(xiàn)在我有一個問題想請教大家,既然青春寓意多且深,用那些詞形容青春才是最最恰當(dāng)?shù)哪兀挥卸霑r間。?(問大家寫黑板)! 解說結(jié)論。我認(rèn)為這......

主站蜘蛛池模板: 精品日韩亚洲欧美高清a| 国产精品99久久久久久猫咪| 777精品出轨人妻国产| 热99re6久精品国产首页| 又大又长粗又爽又黄少妇毛片| 伊人久久大香线蕉综合网| 亚洲乱码一二三四区| 精精国产xxxx视频在线播放| 亚洲午夜无码久久久久蜜臀av| 亚洲精品鲁一鲁一区二区三区| 亚洲综合网站精品一区二区| 国产高清在线精品一区下载| 少妇无码吹潮| 天干天干啦夜天干天天爽| 欧美国产伦久久久久久久| 久久久国产精品黄毛片| 亚洲精品第一国产综合精品| 伊人久久成综合久久影院| 国产亚洲人成网站观看| 绝顶丰满少妇av无码| 蜜桃视频插满18在线观看| 久久毛片免费看一区二区三区| 人妻人人添人妻人人爱| 99视频在线精品免费观看6| 亚洲精品无码久久久久不卡| 亚洲日韩av无码中文| 精品久久久无码人妻字幂| 男女啪啪永久免费观看网站| 国产在线精品无码二区| 9久9久女女热精品视频在线观看| 国产成人精品自产拍在线观看| 国产 | 久你欧洲野花视频欧洲1| 日韩亚洲欧美在线com| 四虎国产精品免费久久久| 国产特级毛片aaaaaa高潮流水| 精品无人区卡一卡二卡三乱码| 亚洲色无码中文字幕手机在线| 欧洲无码八a片人妻少妇| 中国亚州女人69内射少妇| 99蜜桃在线观看免费视频网站| 丁香五月激情综合国产|