一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

excel編程系列基礎:操作對象RANDE的屬性介紹

 部落窩教育BLW 2020-04-29

編按: 哈嘍,大家好!在上篇的VBA文章中,我們提到了RANGE屬性,簡單介紹了它在選中單元格區(qū)域,以及對單元格區(qū)域賦值時的作用,但這僅僅是最基礎的應用,今天我們繼續(xù)來講解RANGE屬性。


【前言】

在上一篇文章中,作者E圖表述給大家分享了關于RANGE對象引用的方法。通過回饋的信息來看,和作者想的一樣——確實有很多的同學,知道并且想學習EXCEL VBA知識。學習更多技巧,請收藏部落窩教育excel圖文教程。

那就讓我們繼續(xù)上次的內容,依然來講RANGE。也許同學們會問,為什么還是RANGE呢?因為在EXCEL中,只要是數(shù)據(jù)處理的問題,最后都會歸結為單元格的引用和操作。即便是操作其他的對象,最終也會將內存中計算或者提取的數(shù)據(jù)結果,賦值到單元格中來,所以說基礎永遠是基礎,根基穩(wěn)了,高級操作才能壓的住。

一、單元格的偏移

在工作表函數(shù)中,有一個OFFSET函數(shù),作者E圖表述之前也專門寫過它的文章《Excel進階之路必學函數(shù):動態(tài)統(tǒng)計之王——OFFSET(上篇)》,不熟悉這個函數(shù)的同學可以看看,因為如果同學們理解了這個函數(shù)的原理,那么對下面的兩個RANGE屬性,將有很大的幫助。

1.RANGE.OFFSET屬性

大家可以看出OFFSET的寫法都是一樣的,在工作表函數(shù)中,OFFSET函數(shù)是既有偏移的功能,也有指定引用范圍是幾行幾列的功能??墒窃?span style="margin-top: 0px;margin-bottom: 0px;padding: 0px;">VBARANGE.OFFSET屬性只有偏移的作用。如下代碼:

Sub 求和()

  Dim rg As Range

  Set rg = Range("C2")

  rg.Value = rg.Offset(0, -2) + rg.Offset(0, -1)

End Sub 

【代碼解析】:

Line1定義rg為單元格變量;

Line2將單元格地址C2賦值給rg變量;

Line3rg向左偏移兩個位置的單元格+rg向左偏移一個位置的單元格,最后將計算結果賦值給rg變量。

通過上面的代碼解析,我們可以看出OFFSET屬性的作用,其含義就是根據(jù)基點單元格,按照參數(shù)進行偏移,以偏移后的位置作為新的基點。

2.RANGE.RESIZE屬性

相對于一個基點的位置,我們可以使用VBA來選擇引用區(qū)域的面積有多大,這里就需要使用RANGE.RESIZE屬性了,如下代碼:

Sub 統(tǒng)計()

  Range("B5") = Application.WorksheetFunction.Sum(Range("B2").Resize(1, 3))

  Range("B6") = Application.WorksheetFunction.Average(Range("B2").Resize(1, 3))

  Range("B7") = Application.WorksheetFunction.Max(Range("B2").Resize(1, 3))

  Range("B8") = Application.WorksheetFunction.Min(Range("B2").Resize(1, 3))

End Sub 

【代碼解析】:

Line1調用工作表函數(shù)SUM,對基于單元格地址B2開始的13列的區(qū)域進行求和運算,并將結果賦值給單元格B5;

Line2調用工作表函數(shù)AVERAGE,原理同Line1,對該區(qū)域進行平均值運算,并將結果賦值給單元格B6;

Line3調用工作表函數(shù)MAX,原理同Line1,對該區(qū)域進行最大值運算,并將結果賦值給單元格B7;

Line4調用工作表函數(shù)MIN,原理同Line1,對該區(qū)域進行最小值運算,并將結果賦值給單元格B8;

特別提示

Application.WorksheetFunction這句代碼就是調用工作表函數(shù)的語句,后面接寫工作表函數(shù),與日常使用函數(shù)的方法一樣,只需記得單元格對象的表達方式,寫成RANGE或者CELLS即可。這個語句我們在前一篇文章《VBA系列基礎教程(一):excel中最常使用的對象——RANGE中也提到過。

通過上面的代碼解析,我們可以看出RESIZE屬性的作用,其含義就是根據(jù)基點單元格,按照參數(shù)進行擴展,以擴展后的區(qū)域作為新的操作對象。

小結:RANGE的OFFSET屬性和RESIZE屬性的結合,和工作表函數(shù)OFFSET的功能是一樣的,這在以后我們講到數(shù)組、字典時,都會有很多的應用,希望同學們能夠在文章中有所掌握。

二、“首行、首列”與“末行、末列”

在本小節(jié)中,作者E圖表述將帶領大家一起學習在使用EXCEL VBA過程中最頻繁的語句之一,“查找數(shù)據(jù)源的起末范圍,以及引出行列號”。

在之前的學習中,我們已經(jīng)說過,單元格的操作將是同學們日后使用EXCEL VBA中操作最多的對象(沒有之一),所以對于引用一個單元格區(qū)域,知道這個區(qū)域的起末范圍,對于快速寫出對應的引用表達式是十分關鍵的。例如下面的數(shù)據(jù)源:

這樣的一個數(shù)據(jù)源,有幾行幾列呢?很簡單,數(shù)一數(shù),158列。但是電腦不會像我們這樣“數(shù)”,計算機的任何操作都是基于人工賦予的指令。所以它需要我們寫出EXCEL可以識別的語言,才能執(zhí)行和我們一樣數(shù)的過程。

1.RANGE.END屬性

我們都知道一個小技巧,就是在一個工作表數(shù)據(jù)源范圍內,選中某一個單元格,分別按:

CTRL+←,能找到連續(xù)區(qū)域的左邊界;

CTRL+→,能找到連續(xù)區(qū)域的右邊界;

CTRL+↑,能找到連續(xù)區(qū)域的上邊界;

CTRL+↓,能找到連續(xù)區(qū)域的下邊界。

學習更多技巧,請收藏部落窩教育excel圖文教程VBA中有同樣效果的語句,就是RANGE.END屬性,對應的規(guī)律也是相當?shù)囊锥子?,不信你看下表?/span>

我們舉個例子看一下,數(shù)據(jù)源如下:

為了更好地說明代碼的應用,作者E圖表述去掉了行號和列號的標題欄,用VBA來確定這個行列的起止范圍,代碼如下:

Sub 末行末列()

  With Sheets("范圍確認")

    a = .Range("A100000").End(xlUp).Row

    b = .Range("AX1").End(1).Column

    .Cells(a + 2, b - 1) = "末行號是:" & a

    .Cells(a + 3, b - 1) = "末列號是:" & b

  End With

End Sub 

【代碼解析】:

Line1WITH語句,提取代碼中相同的父級對象(Sheets("范圍確認")),作為公共從屬關系;

Line2A100000單元格為基點,EndxlUp)向上取連續(xù)區(qū)域的邊界,用Row屬性顯示此邊界單元格的行號,并賦值給變量a;

Line3AX1單元格為基點,End1)向左取連續(xù)區(qū)域的邊界,用Column屬性顯示此邊界單元格的列號,并賦值給變量b;

Line4Cells(a+2,b-1),我們上次已經(jīng)說過如何用CELLS表達單元格地址,那么把末行下移兩行,末列左移一列,作為輸入單元格,輸入字符串,這里的&和工作表中的&是一樣的效果;

Line5原理同Line4;

Line6WITH語句的結束語句。

這段代碼中只寫出了EndxlUp)和EndxlLeft)的用法,大家可以嘗試著寫寫其他的效果。

小思考

1.為什么我的單元格基點,用了“A100000”和“AX1”

2.為什么網(wǎng)上有的代碼會用A65000這個單元格行號?

3.如果要找到首行或者首列,是不是從末行再EndxlUp)就是首行,或者從數(shù)據(jù)中部的某個單元格EndxlUp)也是首行;首列同理?

如果你還沒有思路,就想想CTRL+箭頭,你是從哪個單元格作為基點的。

三、單元格的“行”和“列”

行列交叉,整齊有序,縱橫間就是我們的電子表格,那么“既要縱橫,豈能不談行列”。

通過上面的代碼,我們應該已經(jīng)發(fā)現(xiàn)RANGE.ROWRANGE.COLUMN兩個屬性,分別是代表指定單元格的“行號”和“列號,這個記起來應該也不難,畢竟在工作表函數(shù)中,也有ROW函數(shù)和COLUMN函數(shù)。

那同學們可能會說,工作表函數(shù)中也有ROWSCOLUMNS函數(shù),機智如你,是的,VBA中也有 RANGE.ROWSRANGE.COLUMNS屬性。那么結合這些屬性,我們一起舉一個案例看一下:

Step1】:新建一個工作表,命名為“RC屬性;

Step2】:在工程窗口中,雙擊“RC屬性工作表對象,在通用菜單欄中選擇Worksheet;

Step3】:在右邊的菜單欄中選擇SelectionChange事件(選取改變時,觸發(fā)代碼);

Step4】:輸入代碼如下:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

  If Target.Row <= 10 And Target.Column = 1 Then

    a = Target.Row

    Range(Cells(1, 3), Cells(a, 3 + a - 1)).Select

    Set Rng = Selection.Rows

    MsgBox Rng.Address

  End If

End Sub 

【代碼解析】:

Line1判斷當被選中對象的行號小于等于10,并且列號等于1的時候;

Line2將被選中的單元格行號賦值給一個變量a

Line3使用Rangecells,cells)的表達式,構建一個根據(jù)備選單元格行號,列出的單元格區(qū)域。比如:選擇第3行,就構建以C1單元格為左上角的3*3單元格矩陣,并且選中這個區(qū)域;

Line4使用ROWS屬性,將SELECTION(被選中的單元格)中涉及的單元格賦值給Rng變量;

Line5使用MSGBOX函數(shù),顯示Rng.ADDRESS(地址)屬性信息框。

【編后語】

今天的信息量又是不少(我從來不寫單一的內容),每天進步一點點,忘了就回來再看看,持之以恒的前提下,更應該明白天道酬勤的道理。“多看、多練、多總結”永遠是成功者的不二法門。學習更多技巧,請收藏部落窩教育excel圖文教程。

****部落窩教育-excelVBA編程基礎****

原創(chuàng):E圖表述/部落窩教育(未經(jīng)同意,請勿轉載)

更多教程:部落窩教育

    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    欧美一区二区三区视频区| 日韩中文高清在线专区| 亚洲一区二区三区国产| 在线免费看国产精品黄片| 日本午夜乱色视频在线观看| 色无极东京热男人的天堂| 极品少妇一区二区三区精品视频 | 日韩人妻精品免费一区二区三区| 亚洲成人精品免费在线观看| 91欧美日韩国产在线观看| 久久99青青精品免费观看| 狠狠干狠狠操在线播放| 黄色av尤物白丝在线播放网址| 国产在线一区中文字幕| 一区二区三区亚洲国产| 欧美三级精品在线观看| 久久99这里只精品热在线| 91亚洲国产成人久久精品麻豆| 综合久综合久综合久久| 日本熟女中文字幕一区| 国产日韩欧美专区一区| 五月激情综合在线视频| 国产精品不卡一区二区三区四区| 精品亚洲av一区二区三区| 欧美又黑又粗大又硬又爽| 国产大屁股喷水在线观看视频 | 美女被后入福利在线观看| 亚洲黄香蕉视频免费看| 久热香蕉精品视频在线播放| 日韩欧美国产三级在线观看| 日韩精品人妻少妇一区二区| 成人国产激情在线视频| 国产成人av在线免播放观看av| 亚洲精品一区二区三区日韩| 加勒比系列一区二区在线观看| 免费大片黄在线观看日本| 午夜国产成人福利视频| 国产av精品高清一区二区三区| 精品熟女少妇av免费久久野外 | 少妇淫真视频一区二区| 欧美日韩综合综合久久久|