系統:Windows 7
軟件:Excel 2016
- 本系列講講數組功能
- 今天說說數組與Excel單元格傳遞信息:即數組如何讀取單元格中信息;數組信息如何寫入Excel單元格
Part 1:實現內容
- 有兩個Excel工作表,表1:Excel讀出;表2:數組寫入,爲空表
- 實現功能1,讀取Excel中信息:
- 讀取表1的A1-C1單元格區域,賦值給數組arr1
- 讀取表1的A2-C3單元格區域,賦值給數組arr2
- 實現功能2,數組寫入Excel表格中
- arr1寫入表2的A1-C1單元格區域
- arr2寫入表2的A2-C3單元格區域
- 通過Array創建2個數組再寫入表2單元格
表1:Excel讀出
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-g1FB2Q15-1591524526728)(https://upload-images.jianshu.io/upload_images/7490971-04a23685be638712.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]
Part 2: 代碼
Sub test1()
' 讀取Excel數據
Set shtExcel = ThisWorkbook.Worksheets("Excel讀出")
arr1 = shtExcel.Range("A1:C1")
arr2 = shtExcel.Range("A2:C3")
' 數組寫入Excel
arr3 = Array(1, 2, 3)
arr4 = Array(Array(4, 5, 6), Array(7, 8, 9))
'轉置
arr5 = WorksheetFunction.Transpose(arr4)
arr6 = WorksheetFunction.Transpose(arr5)
Set shtArr = ThisWorkbook.Worksheets("數組寫入")
shtArr.Cells.ClearContents
shtArr.Range("A1").Resize(1, 3) = arr1
shtArr.Range("A2").Resize(2, 3) = arr2
shtArr.Range("E1").Resize(1, 3) = arr3
shtArr.Range("E2").Resize(2, 3) = arr4
shtArr.Range("E7").Resize(1, 3) = arr4(0)
shtArr.Range("E8").Resize(1, 3) = arr4(1)
shtArr.Range("E10").Resize(2, 3) = arr6
End Sub
代碼截圖
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-6Yt1dpPx-1591524526730)(https://upload-images.jianshu.io/upload_images/7490971-c89984f92a98146f.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]
運行過程
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-ZpsCxrU5-1591524526732)(https://upload-images.jianshu.io/upload_images/7490971-d2559dabc4999be3.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]
運行結果
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-UZIJHbci-1591524526733)(https://upload-images.jianshu.io/upload_images/7490971-f2cf5291d103feca.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]
Part 3: 部分代碼解讀
- Excel單元格讀取數據至數組,將單元格區域賦值給數組即可
- 無論賦值的1行還是2行單元格,對應數組都是2維數組
- 將數組賦值給Excel單元格區域,通過Resize函數先確認單元格區域
- 單元格.Resize(行數,列數),構建一個矩形區域,單元格爲該矩形的左上角
- 當構建的單元格區域是多行多列時,對應的數組必須是2維數組,如果不是則賦值錯誤,如表2的E2-G3區域(對應代碼
shtArr.Range("E2").Resize(2, 3) = arr4
,沒有成功,返回多個#N/A)
- 通過
arr4 = Array(Array(4, 5, 6), Array(7, 8, 9))
構建的數組本質上還是一個1維數組,如下圖所示(訂正上一篇文章的錯誤)- 只不過每一個元素又是一個數組
- 通過兩次轉置
WorksheetFunction.Transpose
,可以將其變爲真正的2維數組arr6 - 從本地窗口中查看兩個數據的形式可以看到兩者表達方式的不同
arr4
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-3C1L9pqk-1591524526736)(https://upload-images.jianshu.io/upload_images/7490971-42522229f75a01b8.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]
arr6
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-KzClc69s-1591524526737)(https://upload-images.jianshu.io/upload_images/7490971-66d763ed4e2239e1.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]
- 更多學習交流,可加小編微信號
learningBin
更多精彩,請關注微信公衆號
掃描二維碼,關注本公衆號
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-elOWOTGK-1591524526737)(http://upload-images.jianshu.io/upload_images/7490971-426ce9fb969584ac.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]