作者cislomon (c slomon)
看板Office
標題[算表] VBA 貼出ARRAY指定區間 已解決
時間Tue Jul 30 15:03:12 2019
軟體:Excel
版本:2016
各為大家好
現在我有個狀況是這樣
查了兩天還是不知道該怎麼辦
我在VBA內有個不小的陣列
先假設是9x10000的陣列好了
Dim FF(1 to 9, 1 to 10000) As Variant
那我只想要把 FF(6~9, 10~10000)的內容貼出來
貼到 Range("A1:D9990")的區間上
有沒有辦法
在不創造新的陣列的情況下
直接將FF()的指定區間給貼出來呢?
請求各位大大幫忙解惑~~~
已解決
Range("A1:D9990") = Application.Index(FF, [row(11:10000)], [Column(f:i)])
以上可正確貼出指定陣列範圍
如果要用可變範圍的話
可以先
Dim i as Integer, j as Integer
i=11
j=10000
Range("A1:D9990") = Application.Index(FF, Evaluate("row(" & i & ":" _
& j & ")"), [Column(f:i)])
以上可貼出可變的動態區間
另外同理
Application.WorksheetFunction.Sum(Application.Index _
(FF, [row(11:10000)], [Column(f:i)]))
可以將陣列內指定範圍做加總
感謝soyoso大大熱心的指導~
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 110.26.62.195 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Office/M.1564470194.A.78C.html
1F:→ soyoso: application.index配合[column(f:i)]和[row(10:10000)] 07/30 15:49
2F:→ soyoso: 另外10~10000以a1:d9990無法正確顯示的 07/30 15:51
3F:→ soyoso: 10~10000是9991筆資料 07/30 15:51
soyoso大大您好!
我嘗試寫了以下語法
Range("A1:D9990") = Application.WorksheetFunction.Index(FT(), _
[row(11:10000)], [column(f:i)])
但VBA運行結果是顯示 "型態不符合"
可以再麻煩s大稍微提點一下嗎...
4F:→ soyoso: application.index(ft,[column(...)],[row(...)]) 07/31 11:15
原來沒有WorksheetFunction
剛剛我試了這個語法
Range("A1:D9990") = Application.Index(ft, [row(11:10000)], 6)
可以在儲存格A1:D9990
全部都貼上ft內第六直排的資料
但是如果改成
Range("A1:D9990") = Application.Index(ft, [colunm(f:i), [row(11:10000)
或是
Range("A1:D9990") = Application.Index(ft, [row(11:10000], [colunm(f:i)])
儲存格則是全部都變成 #NAME?
f:i 換成 6:9 也是 #NAME?
求救~~~~
5F:→ soyoso: 不是回文寫的[row(11:10000],是[row(11:10000)] 07/31 12:11
6F:→ soyoso: column方面也是,[column(f:i),不正確,是[column(f:i)] 07/31 12:12
7F:→ soyoso: 上面的部分會回傳錯誤#value;會回傳錯誤#name?是因為 07/31 12:18
8F:→ soyoso: 回文colunm並不正確,是column 07/31 12:19
9F:→ cislomon: 感謝s大~~ 原來我vba裡面是打成colunmn...已解決~ 07/31 12:56
10F:→ cislomon: 不好意思還要您幫忙抓錯字...晚點回把這文章編排好^^ 07/31 12:57
11F:→ soyoso: 內文變數是FF但index內卻是FT,有用transpose嗎? 07/31 18:31
12F:→ soyoso: 因為以內文FF宣告的二維方式,測試是無法正確回傳資料, 07/31 18:33
13F:→ soyoso: 會出現錯誤值#ref,需column在前。 07/31 18:34
14F:→ soyoso: 但transpose後可以row在前 07/31 18:35
15F:→ soyoso: 但因沒有說明變數FF和FT的關係,這方面是否說明一下 07/31 18:36
16F:→ cislomon: FF就是FT我後來手誤打錯,這邊都沒有用transpose 07/31 22:12
17F:→ cislomon: 不過我試起來,好像都是row要在前面@@ 07/31 22:13
18F:→ soyoso: 在我這裡測試,是column在前,所以回文也才一直是這樣回的 07/31 22:23
19F:→ soyoso: 原po可以正常使用即可 07/31 22:24
20F:→ cislomon: 可以正常使用唷~ 不過想再延伸問一下 08/01 23:19
21F:→ cislomon: [row(11:10000)]裡面的 11:10000 想換成變數,該怎麼寫 08/01 23:19
22F:→ cislomon: 才對... 我用 [row(i1:i2)]這類的寫法是不行的QQ 08/01 23:20
23F:→ soyoso: []改以evaluate(...)括號內可用變數連接& 08/01 23:21
※ 編輯: cislomon (27.52.62.21 臺灣), 08/06/2019 14:15:23
24F:→ cislomon: 我又有新的問題了@@ column這邊該如何換成變數比較好呢? 08/06 14:16
25F:→ soyoso: 一樣,以evaluate(..)括號內可用變數連接 08/06 16:49
26F:→ soyoso: 就看,帶入如果是數字的話chr轉為英文字母 08/06 16:49
27F:→ cislomon: 非常感謝s大~ 08/08 23:17