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

2021-01-19 江覓易見

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

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

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

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

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

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

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

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

總之,要學會。

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

歡迎關注、收藏

相關焦點

  • VBA中數組的利用及對「過程」的理解(VBA學習方案之五)
    在對數組的知識講解中還提到了Lbound函數和Ubound函數,這兩個函數用於獲取數組的上界和下界(或者叫上標或下標),希望大家能理解數組、利用數組,這是自己VBA思維提高的一個必經階段,代碼控制一個變量到代碼控制多個變量是自己VBA思維的一個飛躍。這裡的數組是不同於EXCEL工作表中的數組,在VBA中數組大家可以摒棄迭代的運算了。
  • 精通Excel數組公式020:MMULT數組函數
    學習Excel技術,關注微信公眾號:excelperfect
  • Js Array數組ES5/ES6常用方法
    ES6箭頭函數)的數組的第一個元素的值,參數:(自定義函數:函數的參數:(項目值(必選),項目索引,數組本身))返回:查找到的第一個值,,原數組不變。>findIndex():與上面方法用法一樣,不同的地方是查找的是第一個下標返回:查找到的第一個值的下標,查找不到則返回-1,原數組不變。
  • javascript中數組的22種方法
    數組總共有22種方法,本文將其分為對象繼承方法、數組轉換方法、棧和隊列方法
  • Processing教程 - 類和動態數組
    從我們使用和理解的角度來看,我們定義的類,往往表徵了一種或具象或抽象的事物。比如對於教程中的雪花來說,我們定義一個雪花的類,再在其中構建雪花的位置/尺寸/速度等變量,以及它的下落/旋轉/呼吸的動態變化的函數。這些變量和動態函數都有名字,這樣代碼組織和調用起來就非常的直觀了。
  • 程式設計師必知的數據結構與算法基礎:線性表數據結構之數組
    算法就是操作數據的方法,即如何操作數據效率更高,更節省資源。這只是抽象的定義,我們來舉一個例子,你有一批貨物需要運走,你是找小轎車來運還是找卡車來運?這就是數據結構的範疇,選取什麼樣的結構來存儲;至於你貨物裝車的時候是把貨物堆放在一起還是分開放這就是算法放到範疇了,如何放置貨物更有效率更節省空間。
  • MATLAB二維數組(矩陣)的創建
    MATLAB 二維數組與矩陣之間有很大的相關性,二維數組是由實數或複數排列成矩形構成的,而且從數據結構上看,矩陣和二維數組沒有區別。
  • 入門C語言中的數組,字符串常量與指針
    1]; C數組開始於元素0,所以像陣列定義 int a[3];將創建三個int元件,可尋址如a[0],a[1],和a[2]請注意,即使定義很難說a[3],也沒有名為a[3] 與其他變量一樣,全局和靜態數組元素默認情況下初始化為0,並且自動數組元素填充有垃圾值 可以使用大括號中的一個或多個值來初始化數組
  • 旋轉數組(Rotate Array)
    方法一(臨時數組)該方法最為簡單和直觀,例如,對數組 arr[] = [1,2,3,4,5,6,7] ,k = 2 的情況,就是將數組中的前 k 個元素移動到數組的末尾,那麼我們只需利用一個臨時的數組  temp[] 將前 k 個元素保存起來 temp[] = [1,2] ,然後將數組中其餘元素向左移動 2 個位置 arr[] = [3,4,5,6,7,6,7
  • C語言數組的優缺點,你有學廢嗎?
    例如,整數數組保存int類型的元素,而字符數組保存char類型的元素。下面是數組的表示形式:但是,數組有其自己的優點和缺點。以下是數組的一些優點:在數組中,使用索引號可以很容易地訪問元素。搜索過程可以輕鬆地應用於數組。
  • 第三篇:C語言中數組與變量的不同,一個更好用的存儲空間
    在程式語言中,有一個非常核心的概念「變量」。雖然變量中保存的數據可以發生變化,但還是存在著一定的局限性。比如:當要保存一個班多個學員的成績。有沒有一種更大的容器,可以一次性存儲多個數據,而且只需要一個變量名就可以解決問題?
  • 微軟:Excel 公式是世界上使用最廣泛的程式語言
    LAMBDA 允許使用 Excel 自身的公式語言自定義功能,而過去,Excel 中需要通過 JS 等語言編寫自定義函數。同時,LAMBDA 還可以實現一個函數對另一個函數的調用,通過單個函數調用可以部署的功能將不受限制。
  • 面向對象編程從小白到王者系列-認識程序中的數組
    這裡都是乾貨,零基礎學習編程,免費學大學課程,#未來是科技的世界,你再不努力就會被淘汰了,趕快拿上小本本開始學習吧。#2020年的擁有和失去#要從現在開始都補回來。有很多老鐵對C#中數組的理解不是很清楚,所以今天我就出一片文章來解釋一下數組這個神秘的東東是什麼,它和我們日常生活中有什麼關係,在日常生活中我們有哪些地方用到。
  • 如何使用JavaScript實現前端導入和導出excel文件
    1.2 實現一鍵導入excel文件並生成table表格導入excel文件的功能我們可以用javascript原生的方式實現解析, 比如可以用fileReader這些原生api,但考慮到開發效率和後期的維護, 筆者這裡採用antd的Upload組件和XLSX來實現上傳文件並解析的功能.
  • Excel vlookup函數的多條件操作實例及if{1,0}數組組合剖析
    圖1提示:若表格中有多件85元的服裝,則vlookup函數隻返回第一件符合條件的服裝。橫向數組是佔一行兩列,元素之間用「,」分隔,例如 {1,0} 為橫向數組;縱向數組佔一列兩行,元素之間用「;」分隔,例如 {1;0} 為縱向數組。
  • 旋轉數組的最小數字(劍指 Offer 題解Java版)
    旋轉數組的最小數字題目描述題目連結解題思路可以藉助下圖理解過程代碼旋轉數組的最小數字題目描述把一個數組最開始的若干個元素搬到數組的末尾,我們稱之為數組的旋轉。輸入一個非遞減排序的數組的一個旋轉,輸出旋轉數組的最小元素。
  • c語言中malloc申請的空間和直接定義變量申請的空間有什麼區別?
    有很大區別。根據以前的編程經驗,要點有三點:一是空間分配的連續性;二是動態內存申請;三是防止程序執行中出現異常錯誤。以下分別說明。直接定義變量與malloc定義變量的編程含義;malloc事先分配好了內存空間。
  • 為什麼數組下標從0開始
    在討論數組下標為什麼從0開始之前我們先回顧一下數組有什麼特點。數組的優點:1.內存中佔據連續的內存空間2.數據隨機訪問,也就是說獲取數據非常高效那為什麼說數組的數據可以隨機訪問而且取數據非常高效呢?下面我們來看這樣一張圖:上圖是一個長度為10的整型數組,我們假設數組的首地址是1000。不難看出當下標從0開始的時候,數組中各個元素的首地址計算公式是:a[i]地址 = 1000 + i*4。(其中1000是數組a的首地址,4是每個元素佔的內存大小(int佔4個字節大小)。)
  • Excel現允許用戶通過LAMBDA創建自定義函數
    微軟近日為 Excel 用戶帶來了多項重要功能更新,其中就包括了對自定義數據類型的支持。
  • C語言之類型定義(typedef)
    並且有了別名,本名我都可以不要了(當然你也可以加上)。雖然說簡化寫法是一個不錯的功能,但卻不是一個很必要的功能。那麼肯定有別的好處才是。我們知道C語言定義數據類型的時候只定義了它們之間的關係,但卻沒有具體定義它們的大小。