Board logo

標題: [發問] "if"函數紀錄"動態"資料可否讓資料靜態停止? [打印本頁]

作者: shing0520    時間: 2013-10-25 01:06     標題: "if"函數紀錄"動態"資料可否讓資料靜態停止?

由於上司最近迷上股票,因此常常會指派奇怪的excel問題,有些已經超過小妹的能力範圍,因此今天特地來版上求助大家<(_ _)>
第一、第二列的資料(從股票軟體自動匯入的動態資料)
代碼        商品                            交易日期                 時間                 買進        賣出        成交        漲跌
FITX*1        台股指數近月           2013/10/22        13:45:00        8414        8415        8414          14
上司交代,希望每次資料到了「他指定的時間,就可以自動記錄1)成交2)漲幅」 而他交代的時間點有: 08:45:05/08:45:15/10:00:00/10:30:00/11:00:00/11:30:00/12:00:00/13:40:00
本來我是簡單的想說 那我就列個表格如下
時間                   漲幅                  成交
08:45:05              1*                    2*
我的設定:
1 = IF( 08:45:05 =$C$4動態資料的時間,D$4動態資料的漲幅," ")
2 = IF(08:45:05 =$C$4動態資料的,E$4$動態資料的成交價," ")
問題:
經過測試後,在08:45:05時,動態資料的確會顯示在我所安排的1*、2*儲存格裡,但是到了08:45:06時,資料就消失了(畢竟我的if函數中所設定的value_if_false是=" "),不知道有沒有辦法可以讓資料hold在08:45:05呢?????  <(__ __)> 勞煩版上的大大了, 附件 [attach]16474[/attach]
作者: yuhuahsiao    時間: 2013-10-25 08:18

回復 1# shing0520


    您這個要用下面VBA 方式 記錄, 因為看盤軟體的資料不會一直保留,會隨時間往前走
所以過去的資料要自己儲存

    http://forum.twbts.com/viewthread.php?from=notice&tid=10556
作者: c_c_lai    時間: 2013-10-25 09:55

本帖最後由 c_c_lai 於 2013-10-25 09:57 編輯

回復 1# shing0520
1.  首先妳開啟 "股票報價數據自動記錄.xlsx" 檔案後,將它另存新檔
      存檔類型請選擇 "Excel 啟用巨集的活頁簿 (*.xlsm)" 、或者
      "Excel 97-2003 活頁簿 (*.xls) " 的檔案型態。
2.  請將下列程式碼全部剪貼至 ThisWorkbook 程式碼區塊內儲存:
  1. Option Explicit

  2. Private Sub Workbook_Open()
  3.     If Weekday(Date, 2) <= 5 Then Scheduler     '  非假日則執行 Scheduler
  4. End Sub

  5. Sub RTimer()
  6.     Dim TimeRange As Range, Rng As Range
  7.     Dim tm As Date

  8.     If TimeValue(Now) >= TimeValue("13:45:01") Then Exit Sub    '  一過盤後即自行跳離,不再執行
  9.    
  10.     tm = Now()
  11.     With Sheets("連結時間記錄")
  12.         Set TimeRange = .[A:A].Find(TimeSerial(Hour(tm), Minute(tm), 0))   '  檢查 "A" 欄位對應之時間資料
  13.         If Not TimeRange Is Nothing Then       '  吻合預先排程時段,則執行對稱寫入資料
  14.             Set Rng = TimeRange.Offset(, 1).Resize(1, 2)
  15.             
  16.             Rng(1) = .[I2]     '  漲幅%
  17.             Rng(2) = .[G2]     '  成交
  18.         End If
  19.     End With

  20.     Scheduler
  21. End Sub

  22. Sub Scheduler()
  23.     If TimeValue(Now) < TimeValue("08:45:00") Then
  24.         Application.OnTime (TimeValue("08:45:00")), "ThisWorkbook.RTimer"        '  8:45 時間一到會自動執行
  25.     Else
  26.         Application.OnTime (Now + TimeValue("00:00:01")), "ThisWorkbook.RTimer"      '  每隔一分鐘搜尋一次
  27.     End If
  28. End Sub
複製代碼
3.  將檔案先行儲存關閉後,再重新開啟就可自動處理運作了。
4.  在程式中我加註了一些說明,希望對妳會有所幫助。祝愉快!
作者: shing0520    時間: 2013-10-28 22:11

真是感謝樓上的大家的幫忙~~我這就來試試看~如後續有遇到問題 還拜託大家了 <(___ ___)> 真是金多蝦!
作者: shing0520    時間: 2013-10-31 09:34

[attach]16517[/attach]T____T 測試了好幾天,似乎都沒動靜,不知道是不是我哪裡搞錯了
附上偵錯圖,還望哪位大師有空發揮愛心幫忙解惑<(__ __)> 感恩
作者: c_c_lai    時間: 2013-10-31 09:48

回復 5# shing0520
請問你的程式碼放置於何處?
模組裡放的是甚麼?
作者: c_c_lai    時間: 2013-10-31 10:14

回復 5# shing0520
[attach]16518[/attach]
作者: shing0520    時間: 2013-10-31 10:27

程式碼放置: 我是點選「ThisWorkbook」點右鍵,「檢視程式碼」,然後把c_c_lai大師的程式碼 複製貼上在「右邊的空白框裡」

模組裡面: 之前不小心按到"錄製巨集"(有馬上按停),剛剛有把模組裡的東西給刪除了,但是還是沒幫助 T_T

PS 我感覺VBA是有觸發,只是無法把我要的data記錄下來~

由於這是第一次使用VBA,如果如果搞了啥蠢事,還希望大家肯發揮愛心 <(__ __)> 謝謝~
作者: shing0520    時間: 2013-10-31 15:26

附上我的檔案~還望善心人士的解答 <(__ __)> [attach]16521[/attach]




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