Board logo

標題: [發問] 想製作一個股票價格的最高價紀錄 [打印本頁]

作者: 89691007    時間: 2014-4-9 12:22     標題: 想製作一個股票價格的最高價紀錄

我想要在股票紀錄表中
設定一個從追蹤日開始
每天更新當日最高價格
如果當日最高價有比歷史最高價還要高的話
將歷史最高價=當日最高價
如果沒有大於則不改變歷史最高價

資料有多筆每一行都需要逐一比價
因為資料是在收盤後才做一次更新
所以希望能做成單鍵按鈕的形式
每天更新完收盤後做一次最高價更新

例如:代號      股名       當日最高    歷史最高
         1101    台泥       47.55             47.0
         1102    亞泥       38.3               40.0

則按下按鈕後,台泥的歷史最高會改變成47.55,而亞泥不變

希望有大大們可以協助我 謝謝~
作者: yen956    時間: 2014-4-9 13:57

試試看:
  1. Option Explicit
  2. Private Sub CommandButton1_Click()
  3.     Dim i, lastRow As Integer
  4.    
  5.     lastRow = [A1].End(xlDown).Row       '取得A欄最下一行
  6.    
  7.     For i = 2 To lastRow
  8.    
  9.        '如果 當日最高價>歷史最高價, 則
  10.        If Cells(i, 3) > Cells(i, 4) Then
  11.            Cells(i, 4) = Cells(i, 3)    '歷史最高價=當日最高價
  12.        End If
  13.     Next
  14. End Sub
複製代碼

作者: 89691007    時間: 2014-4-9 15:11

測試結果OK
感謝大大喔
我會好運用的
作者: 89691007    時間: 2014-4-10 09:12

可以再請問一下大大
03.    Dim i, lastRow As Integer

04.   

05.    lastRow = [A1].End(xlDown).Row       '取得A欄最下一行

06.   

07.    For i = 2 To lastRow

這邊的意思是甚麼嗎?
我想設計其他按鈕但是不清楚逐行比對的寫法
感恩您~
作者: owen06    時間: 2014-4-10 09:56

回復 4# 89691007

Dim i, lastRow As Integer   
==> 定義『i』、『lastrow』為整數

lastRow = [A1].End(xlDown).Row       '取得A欄最下一行
==> lastrow=取得A欄的最後一個有數值的列號
      你在工作表裡,按ctrl+上、下、左、右鍵去動看看,就很清楚明暸了
      end(xldown)=ctrl+下
      end(xlup))=ctrl+上
      end(xltoright))=ctrl+右
      end(xltoleft))=ctrl+左
但是如果你的a欄的數值有不連續的空白格的話,建議你改用
[a65536].end(xlup).row,比較不會發生判斷錯誤。

For i = 2 To lastRow
==> for 要搭配next, for i= 2 to lastrow(剛才上面有計算出lastrow的數值),
       i就會從2一直執行到lastrow的數值為止,假設lastrow是50好了,
       那麼他就會幫你去測 If Cells(2, 3) > Cells(2, 4)
                                   Cells(3, 3) > Cells(3, 4)
                                   Cells(4, 3) > Cells(4, 4)
                                                 :
                                                 :
                                                 :
                                   Cells(50, 3) > Cells(50, 4)
作者: 89691007    時間: 2014-4-10 10:19

所以I從2開始是指跳過標頭開始往下計算範圍
lastRow = [A1].End(xlDown).Row       '取得A欄最下一行
是計算有資料的數列共有幾行

for i= 2 to lastrow 是只有變動行數範圍嗎
那如果是變動列數呢?


謝謝大大詳細解說~
作者: owen06    時間: 2014-4-10 13:35

回復 6# 89691007

for i= 2 to lastrow 是只有變動行數範圍嗎
那如果是變動列數呢?


上面的lastrow,不就是計算列數的變動嗎?
去判斷出資料範圍在a欄的第幾列。

cells(row,column)
row =列(橫)
column=欄(直)   

cells(i,1)、cells(1,i)
看你要讓哪一個動,就把他設定為變數就好了
作者: 89691007    時間: 2014-4-10 22:19

喔喔~了解!
謝謝大大的回覆




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