[算表] VBA 貼出ARRAY指定區間 已解決

作者: cislomon (c slomon)   2019-07-30 15:03:12
軟體: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大大熱心的指導~
作者: soyoso (我是耀宗)   2019-07-30 15:49:00
application.index配合[column(f:i)]和[row(10:10000)]
作者: cislomon (c slomon)   2019-07-31 12:56:00
感謝s大~~ 原來我vba裡面是打成colunmn...已解決~不好意思還要您幫忙抓錯字...晚點回把這文章編排好^^
作者: soyoso (我是耀宗)   2019-07-31 18:31:00
內文變數是FF但index內卻是FT,有用transpose嗎?因為以內文FF宣告的二維方式,測試是無法正確回傳資料,會出現錯誤值#ref,需column在前。但transpose後可以row在前但因沒有說明變數FF和FT的關係,這方面是否說明一下
作者: cislomon (c slomon)   2019-07-31 22:12:00
FF就是FT我後來手誤打錯,這邊都沒有用transpose不過我試起來,好像都是row要在前面@@
作者: soyoso (我是耀宗)   2019-07-31 22:23:00
在我這裡測試,是column在前,所以回文也才一直是這樣回的原po可以正常使用即可
作者: cislomon (c slomon)   2019-08-01 23:19:00
可以正常使用唷~ 不過想再延伸問一下[row(11:10000)]裡面的 11:10000 想換成變數,該怎麼寫才對... 我用 [row(i1:i2)]這類的寫法是不行的QQ
作者: soyoso (我是耀宗)   2019-08-01 23:21:00
[]改以evaluate(...)括號內可用變數連接&
作者: cislomon (c slomon)   2019-08-06 14:16:00
我又有新的問題了@@ column這邊該如何換成變數比較好呢?
作者: soyoso (我是耀宗)   2019-08-06 16:49:00
一樣,以evaluate(..)括號內可用變數連接就看,帶入如果是數字的話chr轉為英文字母
作者: cislomon (c slomon)   2019-08-08 23:17:00
非常感謝s大~

Links booklink

Contact Us: admin [ a t ] ucptt.com