Board logo

標題: [發問] 關於"將運算結果傳至特定工作表"的問題 [打印本頁]

作者: yagami12th    時間: 2012-12-9 21:23     標題: 關於不同工作表資料互相傳遞的問題

想請教各位大家關於"不同工作表資料互相傳遞"的問題,以表1做說明:
假設今天是1/3,今天已經在A到G有資料的最後一欄做好資料了,要把該工作表的A欄,B欄,D欄,F欄,G欄的最後一欄的資料,
抓到"工作表2"A欄,B欄,C欄,D欄,E欄的最後一欄,來完成1/3的數據更新。


工作表1
A        B             C          D            E           F                   G
日期  最高價  最低價 成交量  高-低  平均價格  平均成交量
1/1   8000      7900    1000     100      7500              800   
1/2   9000      8000      900      250     7000              750
1/3    9500     8500      750      150     7400              950   

工作表2
A          B                 C               D                       E               
日期  最高價     成交量      平均價格  平均成交量
1/1   8000          1000         7500              800   
1/2   9000           900          7000              750

-----------------------------------------------------------------------------------------------------------
因為每一天的A到G欄的最後一列都會往下新增,所以不會每天都一樣,想不出來如何代入Array裡用resize指令,所以想請教大家,先謝謝了。
作者: Hsieh    時間: 2012-12-9 21:39

回復 1# yagami12th
  1. Sub ex()
  2. With 工作表1
  3. r = .Cells(.Rows.Count, 1).End(xlUp).Row
  4. 工作表2.Cells(Rows.Count, 1).End(xlUp).Offset(1).Resize(, 5) = _
  5. Array(.Cells(r, "A").Value, .Cells(r, "B").Value, .Cells(r, "D").Value, .Cells(r, "F").Value, .Cells(r, "G").Value)
  6. End With
  7. End Sub
複製代碼

作者: yagami12th    時間: 2012-12-9 21:47

回復 2# Hsieh

謝謝H大,本來想先宣告幾個變數,然後用set rng加上offset(0)去找"用到的欄位"的最後一格,放入幾個變數,再放到array裡頭,
會讓程式碼會寫的很長,學習到了新用法,謝謝。
作者: yagami12th    時間: 2012-12-9 22:19

回復 2# Hsieh

回H大,
這兩行程式碼一直維持在紅字的狀態,不知出了什麼問題,能不能幫我看看:
工作表2.Cells(Rows.Count, 1).End(xlUp).Offset(1).Resize(, 5) = _

Array(.Cells(r, "A").Value, .Cells(r, "B").Value, .Cells(r, "D").Value, .Cells(r, "F").Value, .Cells(r, "G").Value)



另外
r = .Cells(.Rows.Count, 1).End(xlUp).Row  <<<r直接宣告成integer或long會影響到後面的部份嗎
作者: yagami12th    時間: 2012-12-9 23:00

回復 2# Hsieh
謝謝H大的教學,還有感謝之前GBKEE大的教學,才能融匯貫通程式碼,稍微改了一下,很順利成功,程式碼如下:

Sub ex1()

Dim r
Dim Ar()
Dim rng As Range

With Sheets("工作表1")

r = .Cells(.Rows.Count, 1).End(xlUp).Row '因為有這行設定的關係,可以省下很多時間

Ar = Array(.Cells(r, "A").Text, .Cells(r, "C").Value, .Cells(r, "E").Value, .Cells(r, "G").Value)
End With

With Sheets("工作表2")

Set rng = .Range("A" & Rows.Count).End(xlUp)
    rng.Offset(1).Resize(1, 4) = Ar

End With
End Sub
作者: yagami12th    時間: 2012-12-10 00:53     標題: 關於"將運算結果傳至特定工作表"的問題

感謝H大的教學,前面不同工作表資料互相傳遞的問題已經解決,將運算結果要傳送到其他sheet一直變成零,抓不出問題。

想請教的問題如下
以表1做說明:
假設今天是1/3,今天已經在A到G有資料的最後一欄做好資料了,要把該工作表的A欄,B欄,D欄,F欄,G欄的最後一欄的資料,
抓到"工作表2"A欄,B欄,C欄,D欄,E欄的最後一欄,來完成1/3的數據更新後。

在"工作表2"的E欄的最後一格,運算結果為(小數點格式或整數格式),抓到"工作表3"的f3欄,用等於的方式寫不出來,用複製貼上
的好像比較容易,但是速度比較慢的感覺。

工作表1
A        B             C          D            E           F                   G
日期  最高價  最低價 成交量  高-低  平均價格  平均成交量
1/1   8000      7900    1000     100      7500              800   
1/2   9000      8000      900      250     7000              750
1/3    9500     8500      750      150     7400              950   

工作表2
A          B                 C               D                       E               
日期  最高價     成交量      平均價格  平均成交量
1/1   8000          1000         7500              800   
1/2   9000           900          7000              750
1/3   9500          750           7400             950
作者: GBKEE    時間: 2012-12-10 08:07

本帖最後由 GBKEE 於 2012-12-10 08:22 編輯

回復 4# yagami12th
  1. Integer 資料型態
  2. Integer 變數係以範圍為 -32,768 到 32,767 之 16 位元 (2 個位元組) 數字的形式儲存。Integer 的型態宣告字元是百分比符號(%)。
  3. 您可以用 Integer 變數來表示列舉的值。列舉值可代表一個唯一的整數,並具有其特殊意義,可讓您在已知的選項中很快做出選擇。例如,black = 0,white = 1 等等。較好的程式做法是使用 Const 陳列式將每個列舉值定義成常數。
複製代碼
  1. Long 資料型態
  2. Long (長整數)變數係以範圍從 -2,147,483,648 到 2,147,483,647 之 32 位元 (4 個位元組) 有號數字形式儲存。Long 的型態宣告字元為 &。
複製代碼
  1. Dim r As Integer
  2. r = .Cells(.Rows.Count, 1).End(xlUp).Row
  3. 如 r > 32,767 會是 "執行階段錯誤 6: 溢位"
複製代碼
回復 6# yagami12th
5#的程式碼不是可以嗎?
作者: yagami12th    時間: 2012-12-10 08:49

回復 7# GBKEE
回GBKEE大,因為沒辨法順利執行,我先用複制貼上的方法好了,因為昨天一直想用等於來做,所以卡關。




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