- 帖子
- 472
- 主題
- 5
- 精華
- 0
- 積分
- 485
- 點名
- 0
- 作業系統
- Windows
- 軟體版本
- MS Office
- 閱讀權限
- 100
- 性別
- 男
- 來自
- 香港
- 註冊時間
- 2010-7-4
- 最後登錄
- 2014-12-28

|
4#
發表於 2010-9-13 19:58
| 只看該作者
可以說一下 SHEET1 的 A, B, C 3欄是什麼嗎
如果設一個例的話
A欄是牌子, B欄是貨名, C是件數
假設sheet1是
A B C
1 牌子 貨名 件數
2 A Z 1
3 A Y 2
4 B X 3
5 A Z 4
運行後sheet2:
A B
1 牌子貨名 件數
2 AZ 5
3 AY 2
4 BX 3
字典物件可以看成是一個獨立隱藏的excel頁,上面只有key(鍵)和item(值)兩個欄位
如
d("M")=1 -> 把M鍵的值設成數字1
d("N")="c" ->把N鍵有的值設成字"c"
上面兩行會產生下面4個"格子"
M 1
N c
有關上面代碼意思
d(.[A1] & .[B1]) = .[C1]
就是把"牌子貨名"鍵的值設成c1的件數
跟這樣寫一樣
d("牌子" & "貨名") = "件數"
d(a & a.Offset(, 1)) = d(a & a.Offset(, 1)) + a.Offset(, 2)
就是把每一行的 牌子/貨名 鍵 加上c欄的值
a是a欄 "由a2至a欄最後一個格" 的其中一個格子
a.Offset(, 1)是a後1欄的格子 (即是同列b欄)
即是
d("AZ")=d("AZ")+1
d("AY")=d("AY")+2
d("BX")=d("BX")+3
d("AZ")=d("AZ")+4
每一行運一下:
d("AZ")=0+1
d("AY")=0+2
d("BX")=0+3
d("AZ")=1+4 (因為之前 d("AZ")已出現,而且值為1,所以抽出原來的值再加上)
最後用
.[A1].Resize(d.Count, 1) = Application.Transpose(d.keys)
.[B1].Resize(d.Count, 1) = Application.Transpose(d.items)
分別把
所有鍵由EXCEL上A1開始向下列出
和
所有值由EXCEL上B1開始向下列出 |
|