[爆卦]excel vba儲存格的值是什麼?優點缺點精華區懶人包

為什麼這篇excel vba儲存格的值鄉民發文收入到精華區:因為在excel vba儲存格的值這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者waiter337 (給開司一罐蘇格登)看板Office標題Fw: [VBA ] 陣列貼上exc...


於最近新增了許多資訊 轉至本版方便查尋

※ [本文轉錄自 Visual_Basic 看板 #1OYh_fss ]

作者: waiter337 (給開司一罐蘇格登) 看板: Visual_Basic
標題: [VBA ] 陣列貼上excel的方式(回樓上)
時間: Fri Jan 27 11:35:03 2017

這套方式也算拼拼湊湊出來
可能會有些微不正確
但如對於新手或許是個比較快速的一個範例
因為寫陣列不難,但要把陣列貼上cell 實在很難>.<


以下為陣列貼上工作表儲存格cell之辦法

1.
(1維陣列,所有列貼上某起始格,自動調整大小,cell為向下匯入) 上限65536筆
Sheets("sheet1").[A1].Resize(UBound(陣列名)) =Application.Transpose(陣列名)
假設陣列內的資料是
1
3
5
顯示為
1
3
5


2.
(1維陣列,從某起始格,朝向右邊貼上,自動調整大小,cell為向右匯入)
Sheets("工作表1").[A1].Resize(1,UBound(陣列名,1) +1) = 陣列名
假設陣列內的資料是
1
3
5
顯示為
1 3 5



3.
(2維陣列,欄為不固定) #陣列設為0~最後一欄,將相同範圍貼至儲存格
Sheets("sh1").[A1].Resize(UBound(陣列名,1) +1,UBound(陣列名,2) +1) = 陣列名

假設陣列內的資料是
1 2
3 4
5 6
顯示為
1 2
3 4
5 6


4.
(2維陣列,欄為固定) #陣列假設0~2列 為0~4欄,貼至儲存格1~5欄
Sheets("sheet1").range("a1").Resize(UBound(陣列名)+1, 5) = 陣列名
假設陣列內的資料是
1 2 3 4 5
6 7 8 9 0
a b c d e
顯示為
1 2 3 4 5
6 7 8 9 0
a b c d e
也可以寫成
Sheets("sheet1").range("a1").Resize(3, 5) = 陣列名



[請注意以上陣列 UBound(陣列名)是否需要+1 ]
尤其resiz後面用的數字,"並不是"陣列的欄列,而是要貼上儲存格的欄列,
因為陣列是從0開始算
儲存格都用1開始算,請注意
另外也可以將陣列設為 redim ar(1 to 5)搭配儲存格欄列號
或者一開始於最上方寫入 Option base 1 將所有陣列索引值下限的預設值改成 1

這四條方法
我找到外國網站才補齊= =
為了這四行,我花了快20小時 XD
還有靠office板的s大大才得以學會


也歡迎大大一起揪錯 感恩
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.35.158.244
※ 文章網址: https://www.ptt.cc/bbs/Visual_Basic/M.1485488105.A.DB6.html
marki: 謝謝 01/28 10:03
nicegigi: 推推 03/11 21:50
原先第二項是
Sheets("工作表1").[A1].Resize(1,UBound(陣列名,2) +1) = 陣列名
改成
Sheets("工作表1").[A1].Resize(1,UBound(陣列名,1) +1) = 陣列名
※ 編輯: waiter337 (36.237.149.168 臺灣), 10/17/2020 09:02:15

補充一下新進展(資料在國外找到的) 2021/4/21

二維陣列 取出 任一整欄所有資料 或 任一整列所有資料 貼上工作表的方法
(原先的方式只能用迴圈逐個篩出,但有人找到可以用index的方式幫助快速取得)

假設ar陣列內的資料是
1 2
3 4
5 6


單取陣列第一橫列所有資料的方法
[A1].Resize(2, 1) = Application.Transpose(Application.Index(ar, 1, 0))
2 <--這個數字自行調整成你想要貼上的範圍大小,以下例子皆是
顯示為
1
2

第二橫列資料全部取出
[A1].Resize(2, 1) = Application.Transpose(Application.Index(ar, 2, 0))
顯示為
3
4


第一直欄資料全部取出
[A1].Resize(3, 1) = Application.Index(ar, 0, 1)
顯示為
1
3
5


第二直欄資料全部取出
[A1].Resize(3, 1) = Application.Index(ar, 0, 2)
顯示為
2
4
6



追加一項
第二直欄資料全部取出放入另一個陣列br
br = Application.Index(ar, 0, 2)
br陣列顯示為
2
4
6
※ 編輯: waiter337 (36.236.165.70 臺灣), 04/22/2021 23:04:58

※ 發信站: 批踢踢實業坊(ptt.cc)
※ 轉錄者: waiter337 (36.236.165.70 臺灣), 04/22/2021 23:05:58
※ 編輯: waiter337 (36.236.165.70 臺灣), 04/22/2021 23:07:28
※ 編輯: waiter337 (218.166.192.86 臺灣), 05/21/2022 06:48:35

你可能也想看看

搜尋相關網站