看板 Visual_Basic 關於我們 聯絡資訊
這套方式也算拼拼湊湊出來 可能會有些微不正確 但如對於新手或許是個比較快速的一個範例 因為寫陣列不難,但要把陣列貼上cell 實在很難>.< 以下為陣列貼上工作表儲存格cell之辦法 1. (1維陣列,所有列貼上某起始格,自動調整大小,cell為向下匯入) Sheets("sheet1").[A1].Resize(UBound(陣列名)) =Application.Transpose(陣列名) 此種轉置貼上有65536筆上限 假設陣列內的資料是 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 waiter337:轉錄至看板 Office 04/22 23:05 追加另外一項 如果想要把儲存格上的資料 貼到陣列 並成為二維陣列 或者 一維陣列 的方式 舉例: 三個字 "a", "b", "c" 分別位於 range("a1:a3") 想放入陣列 通常的作法是 ar = range("A1:A3") 會顯示為 ar(1,1) 為"a" ar(2,1) 為"b" ar(3,1) 為"c" 由於儲存格為2維陣列 轉換到陣列中 也是二維陣列 另問 是否有方式直接轉為一維陣列? 可用以下方法 ar = Application.Transpose(Range("A1:A3")) 會顯示為 ar(1) 為"a" ar(2) 為"b" ar(3) 為"c"_ ※ 編輯: waiter337 (111.242.196.188 臺灣), 08/03/2021 15:35:56 ※ 編輯: waiter337 (218.166.192.86 臺灣), 05/21/2022 06:50:28