Excel VBA如何定義數組,這裡有最全的數組定義方法

2021-01-08 江覓易見

No.1

VBA中的數組定義和賦值,是編程進階的一個標誌。

無論什麼編程語文,數組的應用是一個十分重要的項目。

如何玩到熟練,就各有各的玩法。

但是基礎的東西,一定要掌握牢固。

這樣才在應用的過程中,不會迷茫。

No.2

首先看一下上面的圖片,是為對數組定義的一個集合。

Dim + 數組名

定義數組用Dim關鍵字,後面的一些參數,沒有也可以,表示任意大小或任意類型的數組。

Dim Arr(0 to 10)

這樣就定義了一個由最小下標為0,最大下標為10的一維數組,也就是Arr數組裡面包含了從0~10的11個變量。

可以給每一個變量賦值,如:

Arr(0)="1"

Arr(10)=10

顯然Arr(0)的值為「1」字符類型值。Arr(10)的值是數字類型,整形或長整形。可以用typename()測試一下。

統一給數組賦值可以用函數Array()進行。

Arr=Array("1","2","3")

值與值之間用","逗號間隔。

數組圖1

No.3

通常定義了一個固定長度的數組並不完全符合我們的要求,如果想再增加一個數組值,怎麼辦呢?

用下面的語句:

ReDim Arr(0 to 20)

ReDim是重新定義數組的意思,就是說把數組Arr重新定義成最小下標為0,最大下標為20的數組。

注意:這樣定義之後的數組,都將會清空,以前保存到數組裡的內容將沒有了。

如果我們不想把數組內容清空怎麼辦?

用下面的定義方式:

ReDim Preserve Arr(0 to 20)

這個定義將不改變原有數組的內容,而改變數組長度。

是不是比較簡單,複雜的工數組在二維,以及三維或多維。

定義方法同理,如:

Dim Arr(0 to 3,0 to 5)

Dim Arr(0 to 3,0 to 5,0 to 10)

比較複雜的多維數組應用就不介紹了,使用起來費大腦。

No.4

上圖為本例代碼,分別創建了三個數組進行舉例說明:

Private Sub CommandButton1_Click()Dim r As Range, s As WorksheetSet s = ThisWorkbook.ActiveSheetSet r = s.Range("C2")Dim NewArr, ro As Long, i As Longro = 7ReDim NewArr(1 To ro)For i = 1 To roNewArr(i) = r.Offset(i, 0)Next is.OLEObjects("TextBox1").Object.Value = "數組名:NewArr" & VBA.vbCrLf & "數組值:" & VBA.Join(NewArr)End Sub

循環方式給一維數組賦值,值為「數組圖1」表格內容,可以對應查看。

下面代碼是將數組定義和重複定義的一些方法統一到一起的例子:

Private Sub CommandButton3_Click()Dim r As Range, s As WorksheetSet s = ThisWorkbook.ActiveSheetSet r = s.Range("C2")Dim NewArr2, l As Longl = 6ReDim NewArr2(l)NewArr2 = Array("一月", "二月", "三月", "四月", "五月", "六月")'數組賦值l = 12ReDim Preserve NewArr2(l) '重定義數組長度,不改變數組內容NewArr2(6) = "七月"NewArr2(7) = "八月"NewArr2(8) = "九月"NewArr2(9) = "十月"NewArr2(10) = "十一月"NewArr2(11) = "十二月"s.OLEObjects("TextBox1").Object.Value = "數組名:NewArr2" & VBA.vbCrLf & "數組值:" & VBA.Join(NewArr2)End Sub

No.5

數組應用是一個逐漸學習的過程,不會一下子學會。

除非你特別聰明,大腦運行特別快。

一維數組很好理解,相當於一個名字雷同的一些變量組合。

多維數組就相對難了,如果學過矩陣,也好理解,如果會下圍棋二維數組也不太困難。

如果你對空間感知能力十分強大,數組對你一定是個小兒科!

總之,數組應用為什麼這麼普遍,因為其有不可替代的作用。

執行效率高是一點,然後還是效率高,通用性能強大。

總之,要學會。

之後還有一些,表格轉換數組的一些應用要介紹。

歡迎關注、收藏

相關焦點

  • Excel VBA 數組基礎知識,初學者不可不學的關鍵知識
    今天和大家要說的是VBA數組的基本知識點,等你學到後面就會知道,數組和字典搭配起來真的是事半功倍的啦!所以學習好數組的基本知識點也是必不可少的,基礎知識有了,才能有後面的應用。數組的基本概念數組其實是一組擁有相同元素的的組合。我們可以使用數組名稱和他在數組中的位置來指定某些特定的值。可以擁有很多的值,他們在數組內部是通過引索號進行區分的。
  • 如何將Excel數據表單元格保存為數組,VBA數組進階應用
    No.1在vba編程中,數組應用是一個十分有用的方法。如何把數據表作為數組進行處理,是編程過程中的一個重要技能。學會之後,將大大提高編程技術,也將使數據處理的過程變得更加流暢。No.2上圖為例,把表格內容作為數組值進行保存,然後通過流程編碼對成績進行一個比較判斷,最終得出一個成績等級的判定。
  • 在VBA中如何使用動態數組,以及利用動態數組去除重複值的方法
    大家好,我們今日繼續講解VBA數組與字典解決方案第22講:在VBA中如何使用動態數組,以及利用動態數組去除重複值的方法。如果文本中含有大量的重複值,此時,如果我們要剔除重複值,該怎麼辦?用VBA的方法該如何做到呢?我在這講和下一講中將解答這個問題,並提供給讀者一個可以測試的實例。今日先講這個內容要用到的知識點。
  • C語言編程技巧:跟我學如何定義及使用一個字符串數組
    如果你使用C++語言進行編程的話,實現起來相對比較簡單,只需直接選擇標準模板庫的字符串string類,在代碼中定義該類的一個數組即可實現。現在的問題是,在純C語言中如何定義這樣的一個字符串數組呢?如對於下面的一個字符串數組:str = {「I love C.」,「I love C++.」,「I love JAVA.」
  • 如何獲取numpy數組的真實地址?如何與ctypes數組共享內存?
    01如何獲取numpy數組元素的真實地址?在Python中,當你定義了一個numpy類型的數組後,它內部元素的真實地址如何獲得呢?這裡可以通過numpy數組的「__array_interface__」接口得到。
  • 了解什麼是數組,如何應用數組,只需1分鐘就可以秒變數組大神!
    Hi,大家好,有很多的小夥伴在私信提問能不能說說什麼是Excel數組,因為不了解什麼是數組,因此對數組公式感覺非常神秘和陌生。由於大部分人都對數組公式很陌生,我一直都在思考如何和大家介紹這個,讓所有人都可以學會的入門資料,鑑於此情此景,本文應景而生,希望本文對你的Excel的水平提高有幫助。同時希望大家交流有錯漏的請給予斧正。
  • Filter函數和ReDim語句講解,以及VBA中利用動態數組排重的方法一
    大家好,我們今日繼續講解VBA代碼解決方案的第61講內容:在VBA中如何使用動態數組,以及利用動態數組去除重複值的方法。在上一講中我們講了使用數組函數將單元格中的文本進行分隔後寫入到工作表中的方法,那麼問題來了,如果文本中含有大量的重複值,在寫入時也會將重複值寫入到工作表中,此時,如果我們要剔除重複值,該怎麼辦?用VBA的方法該如何做到呢?我在這講和下一講中將解答這個問題,並提供給讀者一個可以測試的實例。今日先講這個內容要用到的知識點。
  • Excel函數large、與數組在實際案例中的聯合運用
    今天我們將要講述的內容還是以數組為核心內容,對Excel函數與數組之間的聯合運用方法進行講述,接下來我們就通過實例的形式來講述Excel函數large與數組之間的組合運用方法。這裡我們又要涉及到關於數組和單個之間的數值比較,接下來我們就通過簡單實例形式來比較兩者之間使用方法的優劣。我們有以下這樣一個Excel工作表,其中包括三項內容:姓名,成績,前四名(成績),現在姓名和成績為已知的內容,現在我們的任務就是根據已知的內容,結合相關的函數來得出前四名(成績)。Excel工作表具體如圖三所示:
  • VBA中動態數組的創建及利用
    今日分享的是NO.244,內容是:VBA過程代碼244:VBA中動態數組的定義及創建VBA過程代碼244:VBA中動態數組的定義及創建Sub Mynz()Dim arr() As Stringerow = [c65536].End(3).Row '最後一個非空單元格行號j = 1 '數組索引號
  • 學會ANSYS數組的定義與使用,提高參數化建模與分析水平
    ANSYS中APDL的「數組」與其他高級語言概念類似,這裡通過實例介紹數組的定義、賦值、顯示等內容。在建模和後處理過程中,使用數組可大大提高參數化過程,進而提高分析效率。ANSYS數組分為數值型數組、表數組、字符型數組和字符串數組,如無特別說明,本文所指數組均為數值型數組。
  • VBA在Excel中實現自定義的Sum函數
    【IT168 論壇採風】在Excel電子表格中最常使用的函數應該是Sum了,它是內置的;當然,在Excel中內置的函數還有很多;但是,往往我們使用的函數Excel中並沒有直接提供,或者提供了我們並不知道,這個時候可以自己使用VBA定義一個自己需要使用的函數參與電子表格單元格的計算,這在日常工作中可能是經常要遇到的一個問題
  • 記錄集賦值給數組後,利用轉置函數處理多維數組的方法
    大家好,今日繼續講解VBA資料庫解決方案,今日講解的是第76講,內容是:記錄集賦值給數組後,利用轉置函數處理多維數組的方法。我在第一冊的第43講中,我講了將記錄集存入數組的方案,並通過一個Index函數在工作表中恢復數組數據的方法。今日講的是利用轉置函數來完成同樣的功能。
  • 一起學JAVA——數組和函數
    今天我們高級數據類型——數組以及函數的作用。函數(方法)函數的定義函數就是一段有名字的代碼,可以完成某一特定功能。方法(函數)是java的最小代碼重用單位,方法(函數)是為了重用代碼。方法不能嵌套方法,不能在一個方法內部定義另外一個方法。可以在一個方法內部調用另外一個方法。方法必須寫在類(class)裡。
  • Excel VBA Array數組Transpose方法給列單元格區域賦值
    需要Excel原始碼的網友請點擊關注和轉發,然後直接私信回覆:原始碼因為一維數組是以行來分配地址,如果把一維數組的值給單元格列賦值,則需要用Transpose方法進行行列轉換。#005 Range("A1:E10").Value = Application.Transpose(arr) '給A1:E10單元格區域賦數組值#006 Range("A1:E10").Select
  • java之數組作為方法參數的使用
    代碼如下:public class Demo01ArryParam {public static void main(String[] args){int[] array={1,2,34,78};//定義一個方法System.out.println(array);//地址值printArray(array);//(方法的調用)}/** 方法定義的三要素:*
  • EXCEL中數組的應用專題之一:數組公式是如何輸入的
    在數組公式中使用兩組或多組數據稱為數組參數,數組參數可以是一個數據區域,也可以是數組常量。數組公式中的每個數組參數必須有相同數量的行和列。今日先講數組公式的輸入,數組公式的輸入步驟如下:1選定單元格或單元格區域。如果數組公式將返回一個結果,單擊需要輸入數組公式的單元格;如果數組公式將返回多個結果,則要選定需要輸入數組公式的單元格區域。
  • VBA數組數據回填工作表
    第三節 VBA數組數據回填工作表在前兩節我們講了如何將工作表中的數據讀到數組中,這種操作的實質其實是:將數據預存到內存中,然後在內存中調取數據再進行下一步操作,這樣可以節約反覆提取數據的時間。當我們在內存中將數據計算完成後,需要將結果數組回填給工作表,又要注意哪些問題呢?對於工作表而言,可以回填的是數組可以是一維或二維的。
  • 學會這兩招,PLC編程也可以批量化定義變量-數組、結構
    數組簡單的說,就是多個相同類型數據一定順序排列的集合,使用一個名字命名,並通過編號的方式對這些數據統一管理。在PLC編程過程中,我們也經常遇到同類型的變量需要定義,例如10臺電機的電流值,如果不使用數組你還在這樣?這樣??
  • Java基礎篇——數組詳解
    靜態初始化就是在定義數組的同時給數組元素賦值。靜態初始化使用一對大括號將初值括起來,大括號中元素的個數就是數組的長度。我們可以這樣理解:我們定義的局部變量都存儲在棧中;而堆中存放的都是數組和對象(其實數組也是對象)。凡是new建立的都是在堆中,堆中存放的都是實體(對象),實體可以有多個屬性,如果一個數據消失,這個實體沒有消失,還可以用,所以堆是不會釋放的;但是棧不一樣,棧裡存放的都是單個變量,變量被釋放了,那就沒有了。
  • 怎麼理解php中的數組?php的數組創建和使用方法是什麼?
    php數組的定義數組就是值類型相同的變量的集合,在PHP中的一種常用的複合數據類型,數據可以存放很多的數據,可以存儲任何類型的數據。我們可以把變量當做一個包含值得盒子,那麼可以把數組當做當成一個帶有隔層的盒子,每一層都可以存放一個值。