如何將Excel數據表單元格保存為數組,VBA數組進階應用

2021-01-07 江覓易見

No.1

在vba編程中,數組應用是一個十分有用的方法。

如何把數據表作為數組進行處理,是編程過程中的一個重要技能。

學會之後,將大大提高編程技術,也將使數據處理的過程變得更加流暢。

No.2

上圖為例,把表格內容作為數組值進行保存,然後通過流程編碼對成績進行一個比較判斷,最終得出一個成績等級的判定。

也就是通過成績的多少來確定一個等級區間。

同樣的判斷在不同的表格裡應用也比較多。

如一個銷售表裡面判斷某一個人或一類商品的銷量,如果在某一個區間就做出爆款判定,如果銷量小於某一個值,說明此商品應該下架。

同類型數據表格,我們用數組來做處理,效果會很好。

No.3

要對表格進行一個數組保存,我們用到上圖的一個屬性CurrentArray,此屬性是Range對象裡的一個屬性。

功能是將表格內容返回到一個數組裡。

如:

Dim NewArrr

NewArr=Thisworkbook.Activesheet.Range("A1:A10").CurrenRegion

通過以上代碼,創建了一個數組NewArr,包含了數據表中A1:A10的數據內容。

當然,vba並不是這麼解釋的,但可以這麼理解。

No.4

實際上表格轉換為數組,只要將Range對象對數組直接進行賦值即可,也就是把表格單元格直接賦值給數組。

如下例子:

Dim rs As RangeSet rs = s.Range("B2:B5")Dim arar = rsMsgBox UBound(ar)

執行之後,ar就是一個包含B2:B5單元格值的數組。

ar(1,1)ar(2,1)ar(3,1)ar(4,1)ar(5,1)

注意:

這個數組不是一維數組,它是一個二維數組。

如果要訪問數組中的第一個值,要用ar(1,1)來進行訪問,最後一個值用ar(4,1)訪問。

No.5

可以看到上圖為代碼示例,是這個例子的全部代碼,實際應用要對應著表格進行。

下面看下代碼的具體內容:

Private Sub GetDengji()Dim s As WorksheetSet s = ThisWorkbook.ActiveSheetDim r As RangeSet r = s.Range("B2")Dim ArrMa As VariantArrMa = r.CurrentRegion '數組賦值Dim ui As Long, li As Long, i As Long, j As Long, x As Longli = r.CurrentRegion.Rows.Count '行數ui = r.CurrentRegion.Columns.Count '列數x = r.CurrentRegion.Count '數組總數Dim DJ As VariantDJ = Array("優秀", "優良", "不及格")For i = 1 To li '循環行For j = 1 To ui '循環列If j = 5 And VBA.Len(ArrMa(i, j)) <> 0 Then '條件判斷第5列If VBA.IsNumeric(ArrMa(i, j)) And ArrMa(i, j) >= 80 Then s.Cells(i, j + 1).Value = DJ(0)If VBA.IsNumeric(ArrMa(i, j)) And ArrMa(i, j) >= 60 And ArrMa(i, j) <= 79 Then s.Cells(i, j + 1).Value = DJ(1)If VBA.IsNumeric(ArrMa(i, j)) And ArrMa(i, j) <= 59 Then s.Cells(i, j + 1).Value = DJ(2)End IfNext jNext iEnd Sub

應用數組編碼可以極大提高程序的運行效率,當然了,如果是初級編程人員,對於數組的學習還是有不小困難。

首先應用對數組概念進行一個全面學習。

然後,再著手編輯一些小型程序代碼,來驗證對數組的理解。

無論哪種程式語言,都將應用到數組,通過對數組的學習,我們會引申出另一個學習內容。

字典。

沒錯字典是整個編程中,相對獨特的一種類型。

由於它的特殊性,在應用過程中也是相當出色。

不得不學。

歡迎關注、收藏、轉發

相關焦點

  • 將工作表數據寫入VBA數組
    第二節 將工作表數據寫入VBA數組在上一節中我們講了實現工作表數據與VBA代碼間傳輸的幾種方法,這講我將我們將著重講解如何將工作表的數據寫入數組。》中的一些實際寫法,第一種表示整個工作表的使用區域,第二種是以「A1」單元格為起點的矩形區域,第三種是表示A2到C列最後一個不為空的單元格的矩形區域,第四種是表示A列的使用區域(含空格),第五種是A2到F列的最後使用單元格的區域(適用於低版本的excel),第六種是A列第二個單元格之下的使用區域(含空單元格)2 讀取工作表上指定範圍獲得數組後維數的確認
  • VBA數組函數Split(),將文本內容轉化為數組的實用便捷函數
    大家好,我們今日繼續講解VBA代碼解決方案的第60講內容:如何將文本內容轉化為數組。這個問題的提出是因為我們在處理一些文字時往往在WORD中,要拷貝到EXCEL中來填充一些資料,多是人名,設備名等,這些往往要求以獨佔一個 單元格的信息,這時該如何把這些人名,設備名放到EXCEL中呢?這就是講文本轉化為數組再填充的問題。
  • Excel VBA從新手到高手系列課程
    五、 教學目錄:第一章 新手篇-走進excel vba的世界      1.1 什麼是VBA      1.2 EXCEL中的宏      1.3 認識VISUAL BASIC編輯器        1.4 vba程序結構      1.5 數據類型         1.6
  • EXCEL學習筆記之VBA
    (6) 將數組中的數據寫入單元格區域arr=Split(1,2,3,4,5,6(7)Range對象的End屬性返回制定單元格的區域最尾端的單元格Copy Destination:=目標單元格無論複製的區域包含多少單元格,在設置目標區域時,都可以只指定一個單元格作為目標區域最左上角的單元格即可,如:
  • VBA進階 | 數組基礎06: 與數組相關的函數——Array函數與IsArray函數
    ,代表賦給數組元素的數據。然而,要訪問這個數組中的元素,例如第2行第3列的元素數據「Six」,不能夠使用:myArray(1, 2)這樣,將產生「下標越界」錯誤。此時,可以先使用IsArray函數來確定其是否為數組,然後再進行後續相應的操作。
  • 利用VBA代碼將文本轉換為數組函數
    簡單而言,在取代OFFICE新的辦公軟體沒有到來之前,誰能把應用做到最為先進,誰就是王者。其中登峰至極的技能非VBA莫屬!看全球股市震蕩,市場信心不足,歐美股市熔斷頻發,後疫情時代將終將演繹一場戰勝蕭條的戰役。無論怎樣,我們一定要堅信,疫情終將會過去,曙光一定會到來。
  • 「Python替代Excel Vba」系列(二):pandas分組統計與操作Excel
    帶你用pandas玩轉各種數據處理前言在本系列的上一章已經介紹了如何讀寫 excel 數據,並快速進行匯總處理。但有些小夥伴看完之後有些疑惑:那只是簡單讀寫數據而已,有時候需要設置 excel 的格式。
  • VBA基礎-數組知識
    ➋另一個就是可以將單元格區域賦值給數組,這一點可以極大的簡化VBA代碼。下面我們做個小測試:我們把表格中A1:G10區域的數據複製到A12:G21區域,我們分別用copy方法和數組寫入的方法來測試運行時間。
  • excel中如何對分散的單元格按顏色進行數據統計?
    在Excel中對單元格數據進行統計,最基本的一個操作就是選取要統計的單元格。對於一些連續單元格的選取是非常簡單的,難就難在如何同時選取大量分散的單元格。所以,在excel中如何對分散的單元格按顏色進行數據統計,其本質就是如何快速選取分散的相同顏色的單元格。接下來,以對這些分散的單元格求和為例來介紹一下如何對excel中分散的單元格按顏色進行數據統計,其它的數據統計操作方法類似。先來看一張Excel的數據表。
  • 數據太多容易看錯,可以設置聚光燈效果,數據閱讀更加直觀
    Hello,大家好今天跟大家分享下我們如何在excel中實現聚光燈效果,所謂聚光燈效果就是當我們選擇一個單元格的時候會出現一個高亮的交叉的十字,當數據非常多的時候這樣更加方便我們閱讀數據,讓數據閱讀更加直觀,效果如下圖一、cell函數
  • Excel VBA Array數組給行單元格區域賦值
    需要Excel原始碼的請點擊關注和轉發,然後直接私信回覆:原始碼利用數組的值可以直接給單元格賦值。#003 Range("A1:E5") = "" '清空A1:E5單元格區域內容 #004 Range("A1:E5").Value = Array(1, 2, 3, 4, 5) '給A1:E5單元格區域賦值數組值
  • Excel VBA入門教程1.1 數據和數據類型
    類似的要使用vba,也要入鄉隨俗,了解他的構成,簡單的說vba包含數據類型、 變量/常量、對象和常用的語句結構。不過呢在量和複雜度上遠低於英語,不用那麼痛苦的記單詞了,所以vba其實很簡單的。熟悉了規則之後剩下就是查官方函數啦,查Excel提供的可操作對象啦。順帶一提的是,函數其實也很容易理解,方便使用。
  • excel文本函數應用:單元格中的數字和字母,如何判斷?
    如何快速判斷單元格字符是否包含數字和字母呢?在規範編碼、密碼、用戶名的時候,我們經常要查證某一類字符串是否包含數字、英文、數字與英文的組合,甚至字符串的開頭是否是數字等。很簡單,利用Code、Char、Find、Search文本函數搭配Count函數即可解決這個問題。另外,關於轉換字母大小寫、刪除字符前後兩端的空格等,我們今天也會介紹。學習更多技巧,請收藏關注部落窩教育excel圖文教程。
  • Excel VBA數組入門教程 (共10集)
    a1:c4的數據裝進數組中    Next y  Next x MsgBox arr(4, 3) '根據提供的行數和列數顯示數組 arr(1, 2) = "我改一下試試" '你可以隨時修改數組內指定位置的數據 MsgBox arr(1, 2)End Sub總結:二維是由行和列表示的數組,如ARR(3,2)表示數組中第3排第2列的元素。
  • 3種根據單元格填充色求和與計數方法,再也不用一個一個的計算了
    Hello,大家好,今天跟大家分享下我們如何根據單元格的顏色進行求和與計數,很多人都是一個一個計算的,非常麻煩,其實這都是源於我們數據整理的時候太過隨意,如果在數據整理的的時候就能將數據分類獨立的羅列出來,後期直接求和或者計數即可,根據單元格顏色求和與計數各跟大家分享3種方法一、查找法
  • 動態數組的應用,VBA中如何利用動態數組去除重複值的第二講
    Sheets("kk")中A1單元格的文本去除重複值後寫入到工作表Sheets("kk")中的A列單元格。第2行代碼聲明數組Splarr用來保存Sheets("kk")中A1單元格的文本。第3行代碼聲明數組Arr用來保存去除重複值後的文本。第4行代碼聲明數組Temp用來判斷文本是否重複。第5行代碼聲明變量r用來保存去除重複值後的文本數量。
  • excel如何合併單元格標誌
    excel如何合併單元格標誌如何合併單元格標誌,解決方法:設置【數據透視表選項】的【布局和格式】為【合併且居中排列帶標籤的單元格】        單擊數據透視表區域任意單元格,如圖:(1)      
  • Excel vba獲取當前當前單元格的行號和列號
    Excel vba獲取當前當前單元格的行號和列號在Excel單元格中,我們在編寫語句代碼的時候需要獲取指定單元格的行號和列號如圖,將指定單元格的行號和列號分別填入表中>在vbe窗口中,添加以下代碼Sub 單元格行列號() Selection.Offset(1, 0) = Selection.Row Selection.Offset(1, 2) = Selection.Column End Sub
  • 利用ADO連接EXCEL,提取固定位置(行或者單元格)的數據
    大家好,我們繼續VBA資料庫解決方案的學習,今天講解第33講:利用ADO連接EXCEL,提取固定位置(行或者單元格)的數據。在上一講中我們學習了ADO連接EXCEL後,實現提取列數據的方法,但很多的時候,必要的數據並不是在整列中的,也有可能在行或者某單元格的固定位置,這個時候要如何處理呢?這個內容就是我今天要講解的內容。
  • EXCEL中數組的應用專題之一:數組公式是如何輸入的
    必要時要藉助VBA的思想來來考慮問題,因為數組公式的應用在很多的時候和VBA是一樣的。在數組公式中使用兩組或多組數據稱為數組參數,數組參數可以是一個數據區域,也可以是數組常量。數組公式中的每個數組參數必須有相同數量的行和列。