標題:
[發問]
請問要如何切割數據以方便做圖?
[打印本頁]
作者:
Genie
時間:
2013-12-17 16:56
標題:
請問要如何切割數據以方便做圖?
因為工作需求
所以常常要將圖畫成 sheet2 的樣子
但是從資料庫抓下來的 data 是 sheet1 排列方式
請問該怎麼做才能快速將資料變成 sheet2 的形式以方便做圖呢?
Sheet2 是先對 1. EQ 2. TIME 做排序
再看 EQ 有多少 group 再依順序列在 TIME 的後面,並將同 group 的數值往旁邊移
且根據需要,在 group 的最後插入 0~n 的空白列
(每個 group 後面插入的空白列都是一樣的,不會有的插入一列,有的不插入)
最後再畫出折線圖。
有時候 group 太多,數據會移到亂掉,所以希望藉由 VBA 快速又不易弄錯來達成需求。
排序的部份我可以自己手動排序,但數據切割的部份希望由 VBA 達成。
請幫幫忙,謝謝∼
[attach]17074[/attach]
作者:
stillfish00
時間:
2013-12-20 21:50
本帖最後由 stillfish00 於 2013-12-20 22:01 編輯
回復
1#
Genie
Sub test()
Dim ar, d, arEQ, i As Long
'複製來源
With Sheets("Sheet1")
.AutoFilterMode = False
.[A1].CurrentRegion.Copy Sheets("Sheet2").[A1]
.[A1].AutoFilter
End With
With Sheets("Sheet2")
'排序
With .Sort
.SortFields.Clear
.SortFields.Add .Parent.Range("B2:B" & Rows.Count), xlSortOnValues, xlAscending
.SortFields.Add .Parent.Range("C2:C" & Rows.Count), xlSortOnValues, xlAscending
.SetRange .Parent.[A1].CurrentRegion
.Header = xlYes
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
'找出每段起始位置
ar = .[A1].CurrentRegion.Value
Set d = CreateObject("scripting.dictionary")
For i = 2 To UBound(ar)
If ar(i, 2) <> ar(i - 1, 2) Then d(ar(i, 2)) = i
Next i
'由後往前分割,插入空白
arEQ = d.keys
For i = UBound(arEQ) To LBound(arEQ) + 1 Step -1
.Range(.Cells(d(arEQ(i)), "D"), .Cells(.Rows.Count, "D")).Insert xlToRight
.Rows(d(arEQ(i))).Insert xlDown
Next i
.[D1].Resize(, d.Count).Value = d.keys
End With
End Sub
複製代碼
作者:
Genie
時間:
2013-12-26 13:38
回復
2#
stillfish00
不好意思
我從 "With .Sort" 這裡就開始出現錯誤
請問該如何修正?還是我哪裡有弄錯呢?
謝謝!
作者:
stillfish00
時間:
2013-12-26 15:03
回復
3#
Genie
可能你的版本比較舊,語法不支援
把排序那段換成
'排序
.[A1].CurrentRegion.Sort key1:=.[B1], order1:=xlAscending, key2:=.[C1], order2:=xlAscending, Header:=xlYes, Orientation:=xlTopToBottom
複製代碼
試看看
作者:
Genie
時間:
2013-12-26 16:30
回復
4#
stillfish00
排序的部份沒有出現錯誤訊息了
但下一步又跳出 error "ar = .[A1].CurrentRegion.Value"
這裡該怎麼修改呢?
我 Excel 的版本是 2003
這也是版本差異的問題嗎?
謝謝!
作者:
stillfish00
時間:
2013-12-26 20:46
回復
5#
Genie
可能吧...我沒辦法測試舊版本
寫法很多種,自己試試吧
ar = Range(.[A1],.[A1].end(xldown)).resize(,4).Value
作者:
Genie
時間:
2013-12-27 10:39
回復
6#
stillfish00
還是不行
因為公司只能使用 2003 版
可能語法不支援
所以會一直出現錯誤吧……
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)