- 帖子
- 88
- 主題
- 13
- 精華
- 0
- 積分
- 104
- 點名
- 0
- 作業系統
- WIN7
- 軟體版本
- OFFICE2010
- 閱讀權限
- 20
- 性別
- 男
- 註冊時間
- 2012-1-3
- 最後登錄
- 2017-12-31
|
[發問] ●(發問)大量資料連續新增欄位去計算的值的問題
本帖最後由 yagami12th 於 2012-1-8 12:05 編輯
一直無法夾帶檔案貼到文章裡面,試了好幾次,有人知道原因嗎
請教一個大量資料連續新增欄位計算的問題,在GBKEE大的幫忙下,數據分類好了之後,資料狀況如圖1到圖4所示:
分類好的數據附檔如下:
2011_01.rar (512.4 KB)
資料說明:
我們以2011/1月為例,裡面有2011_01_c跟2011_01_p兩個資料夾,這兩個資料夾裡面分別有34個excel檔案,在2011_01_c裡頭有2011_01_6900_c.xls到2011_01_10400_c.xls(共34個檔案),2011_01_p的資料夾裡也是一樣有34個excel檔(同2011_01_c)
如圖1到圖4所示:
圖一:
圖二:
圖三:
圖四:
-------------------------------------------------------------------------------------------
以2011_01_c裡頭的2011_01_6900_c.xls為例:
步驟1(要計算的東西):
我先在o1欄位新增字串"高價減低價"之後o2計算公式為g2-h2,計算完畢往下複製
再到p1欄位新增字串"成交量變化"(因為要算變化量,所以從p3欄開始才有計算結果,p2欄為空白),p3欄=j3-j2之後往下複製
完成存檔,關閉檔案,再開2011_01_7000_c.xls,同樣在o1欄新增字串"高價減低價"跟p1欄新增字串"成交量變化",之後的計算同上,
完成存檔,關閉檔案,再開2011_01_7100_c.xls,一直做到2011_01_10400_c.xls(2011_01資料夾裡的最後一個檔案),結束。
步驟2:
接著開2011_01_p資料夾,再計算2011_01_6900_p.xls到2011_01_10400_p.xls(計算方式同上),結束。
步驟3:
由於2011_01裡的2011_01_c(裡頭34個excel在上面已計算完畢),2011_01_p(裡頭34個excel在上面也已計算完畢),結束
接著開2011_02的資料,再計算完2011_02_c跟2011_02_p的資料夾裡面的各30幾個excel檔,存檔完畢後,再接著做2011_03的資料一直做到2011_12(要計算的東西同步驟1)
----------------------------------------------------------------------------------------------
步驟1 計算結果的範例(數字是隨便打的,因為排版一直無法完成:(只要計算最右邊兩個欄位的資料)(註:加註顏色會跑掉排版所以沒加註顏色)
| A1 |-----| F1 | 最高價(F1) | 最低價(G1) | H1 |成交量(J1) | 高價減低價(O1) | 成交量變化(P1) |
|2010/12/16 |-----| F2 | 100 | 20 | H2 |2000 | 80 | |
|2010/12/17 |-----| F3 | 200 | 10 | H2 |11000 | 190 | 9000 |
..
..
2010/1/19
---------------------------------------------------------------------------------------
補充說明,圖五:
[attach]9122[/attach]
------------------------------------------------------------------------------------------------
我用巨集錄製的檔案,儲存格的指定方式用錄的會變的怪怪的,因為資料比較多,所以想向各位請教,先謝謝了。
程式碼如下:
Sub 巨集1()
ChDir "C:\Users\user\Desktop\選擇權資料,按年份月份整理\2011選擇權整理完畢\2011_01\2011_01_C"
Workbooks.Open Filename:= _
"C:\Users\user\Desktop\選擇權資料,按年份月份整理\2011選擇權整理完畢\2011_01\2011_01_C\2011_01_6900_C.xlsx" '這裡是開啟指定的檔案
Range("O1").Select '是指在Range(a1)的欄位貼上嗎?不太確定
With Selection '從這行到第13行都看不懂,但感覺不太重要
.HorizontalAlignment = xlGeneral
.VerticalAlignment = xlCenter
.WrapText = False
.Orientation = 0
.AddIndent = False
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
ActiveCell.FormulaR1C1 = "高價減低價" '在英文字母 O1欄位(不是零1)輸入字串"高價減低價",不知道為什麼會變成R1C1這種指定格式,用cell(1,15)比較容易理解
Range("O2").Select '點選O2(英文字母O2)欄位
ActiveCell.FormulaR1C1 = "=RC[-8]-RC[-7]" '然後在O2欄位=g2-h2
Range("O2").Select
Selection.AutoFill Destination:=Range("O2:O26") '算好結果複製到O2到O26
Range("O2:O26").Select
Range("P1").Select '再點選P1欄位
With Selection '從這行到 .MergeCells=Flase 看不懂
.HorizontalAlignment = xlGeneral
.VerticalAlignment = xlCenter
.WrapText = False
.Orientation = 0
.AddIndent = False
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
ActiveCell.FormulaR1C1 = "成交量變化" '在英文字母 p2欄位輸入字串"成交量變化",不知道為什麼會變成R1C1這種指定格式,用cell(1,16)比較容易理解
Range("P3").Select
ActiveCell.FormulaR1C1 = "=RC[-6]-R[-1]C[-6]" '在p3格位輸入公式=j3-j2
Range("P3").Select '停在p3欄位
Selection.AutoFill Destination:=Range("P3:P26") '將p3格位計算結果複製到p26欄位
Range("P3:P26").Select '視窗框在p3:p26停住
ActiveWorkbook.Save '存檔
ActiveWindow.Close '關檔
Workbooks.Open Filename:= _
"C:\Users\user\Desktop\選擇權資料,按年份月份整理\2011選擇權整理完畢\2011_01\2011_01_C\2011_01_7000_C.xlsx" '繼續開2011_01_7000_C.xlsx的檔案,同上所述,繼續做
Range("O1").Select
With Selection
.HorizontalAlignment = xlGeneral
.VerticalAlignment = xlCenter
.WrapText = False
.Orientation = 0
.AddIndent = False
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
ActiveCell.FormulaR1C1 = "高價減低價"
Range("O2").Select
ActiveCell.FormulaR1C1 = "=RC[-8]-RC[-7]"
Range("O2").Select
Selection.AutoFill Destination:=Range("O2:O26")
Range("O2:O26").Select
Range("P1").Select
With Selection
.HorizontalAlignment = xlGeneral
.VerticalAlignment = xlCenter
.WrapText = False
.Orientation = 0
.AddIndent = False
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
ActiveCell.FormulaR1C1 = "成交量變化"
Range("P3").Select
ActiveCell.FormulaR1C1 = "=RC[-6]-R[-1]C[-6]"
Range("P3").Select
Selection.AutoFill Destination:=Range("P3:P26")
Range("P3:P26").Select
ActiveWorkbook.Save
ActiveWindow.Close
End Sub |
-
-
資料夾圖1到2.rar
(634.82 KB)
-
-
資料夾圖3到4.rar
(635.06 KB)
-
-
資料夾圖5.rar
(362.35 KB)
-
-
資料夾圖5.rar
(362.35 KB)
|