Board logo

標題: [發問] excel vba 陣列中的資料如何丟給一個另外定義的RANGE [打印本頁]

作者: alexlkklin    時間: 2012-12-1 21:23     標題: excel vba 陣列中的資料如何丟給一個另外定義的RANGE

本帖最後由 alexlkklin 於 2012-12-1 21:25 編輯

各位大大,

小的目前在練習陣列的運用,
由於是把現行手上的程式拿來修改,
所以有些地方不清楚要怎麼修改,
請各位大大指導,
謝謝!!!

這個是我把一張表丟上自定的陣列中
TBOMcl = Sheets("表1").Range("a1").End(xlToRight).Column
TBOMro = Sheets("表1").Range("a65535").End(xlUp).Row     

在經過一系列的運算後,我要把陣列中的一欄取出做SUMIF的運算
Set rg7po = Range(Sheets("表1").[q2], Sheets("表1").[q65535].End(xlUp)) [這行是我原本定義做SUMIF索引值的]
小的的問題來了
Set rg7po = Range(Sheets("表1").[q2], Sheets("表1").[t65535].End(xlUp))
怎麼定義=後面的這個部份(這個在以前在小的檔案上是一個SHEET,目前己把這個SHEET讀進陣列中)
作者: stillfish00    時間: 2012-12-2 11:40

回復 1# alexlkklin
不是很確定你是不是在問這個...
假設你的Array是rg7po , 你要把Q欄資料讀到rg7po裡面
dim rg7po
rg7po = Application.Transpose(Range(Sheets("表1").[q2], Sheets("表1").[q65535].End(xlUp)))

就可以讀到   rg7po(1), rg7po(2), ...  裡面了
作者: alexlkklin    時間: 2012-12-2 12:26

回復 2# stillfish00

大大,
小的檔案原本是做下列的宣告定義:
Set rg7po = Range(Sheets("表1").[q2], Sheets("表1").[t65535].End(xlUp))
這個部份在原先的程式中是給sumif用來做索引的部份,
由於最近開始接觸"陣列"這個部份,
所以想把原來的程式做修改....
小的檔案有多張表,
表一是用來匯總想要的資料:例如-產品品號/庫存/工單.......
表二是庫存狀況表
表三...表四....表五......temp
我都是把各項相關的資料做運算後匯總到表一上,
現在的狀況是當我把整理好的產品品號丟到陣列時,
我想要把原先的Set rg7po = Range(Sheets("表1").[q2], Sheets("表1").[t65535].End(xlUp)) 做修改掉
rg7po是做range的設定
Range(Sheets("表1").[q2], Sheets("表1").[t65535].End(xlUp))這行怎麼把它變成陣列???
作者: stillfish00    時間: 2012-12-2 15:34

回復 3# alexlkklin
那沒錯啊 , 再定義一個Arr變數
Arr = Application.Transpose(Range(Sheets("表1").[q2], Sheets("表1").[q65535].End(xlUp)))
這樣就可以將Q欄的資料轉為一維陣列了
作者: stillfish00    時間: 2012-12-2 15:53

回復 3# alexlkklin
好像不是 , 這好像跟你發問的標題相反...
你有提到sumif 怎麼不把公式列出來
還有你已經整理好的產品品號 是放在哪?? 是工作表還是變數裡
這樣猜真的很難懂
作者: alexlkklin    時間: 2012-12-2 16:52

回復 5# stillfish00

大大,
原始程式如下,
這個部份目前在檔案上都有實際對應的SHEET去作業,
目前我在修改的就是把這些"表"轉成"陣列"去運算,
不知道這樣子大大您有看懂小的問題嗎?
麻煩大大您了,
謝謝!!!

Set rgpn = Range(Sheets("wh").[a2], Sheets("wh").[a65535].End(xlUp)) '庫存資料-庫存料號
Set rgw00 = Range(Sheets("wh").[j2], Sheets("wh").[j65535].End(xlUp)) '庫存資料-成品倉
Set rgw01 = Range(Sheets("wh").[i2], Sheets("wh").[i65535].End(xlUp)) '庫存資料-零件倉

Set rgabpn = Range(Sheets("表1").[C2], Sheets("表1").[C65535].End(xlUp)) '表1料號

cl = Sheets("表2").Range("L1").End(xlToRight).Column '取表2最後一欄
z22 = Sheets("表1").Range("a65535").End(xlUp).Row
z33 = Sheets("表2").Range("a65535").End(xlUp).Row
For i = 2 To z33
pn = Sheets("表2").Range("a" & i)
stk00 = Application.SumIf(rgpn, pn, rgw00)
stk01 = Application.SumIf(rgpn, pn, rgw01)


ttqty = m02a + m01a + m011 + m015 + m019 + m011w + m015w + m019w
Sheets("表2").Range("K" & i) = ttqty
Next
For i = 12 To cl  ''''由表2取A件料號後計算表1上的需求
    For j = 2 To z33
        Dim rgabqty As Range
        Set rgabqty = Range(Sheets("表1").Cells(2, i), Sheets("表1").Cells(z22, i)) '缺料分析R前置置作業-缺料前置的a組件的各日需求
        awpn = Sheets("表2").Cells(j, 1) ' 取表2的料號
        aqty = Application.SumIf(rgabpn, awpn, rgabqty) ''''取表1上的A件單日需求
        qty = Sheets("表2").Cells(j, i - 1)
作者: GBKEE    時間: 2012-12-4 16:24

回復 1# alexlkklin
在經過一系列的運算後,我要把陣列中的一欄取出做SUMIF的運算
SUMIF無法對陣列運算
語法 SUMIF(range,criteria,sum_range)
Range    是要計算加總的儲存格範圍。
Criteria    是用以決定要否列入加總的搜尋準則,可以是數字、表示式或文字。例如,criteia 可以是 32、"32"、">32" 或 "apples"。
Sum_range    是實際要加總的儲存格。




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)