返回列表 上一主題 發帖

關於資料比對的寫法

回復 1# 藍天麗池
你是以"總量變動" 抑或是 "成交價" 做為比對標準?
請再仔細描述說明,謝謝!

TOP

回復 3# 藍天麗池
ThisWorkbook:
  1. Private Sub Workbook_Open()
  2.     Dim rng As Variant
  3.    
  4.     With Sheets(1)
  5.         For Each rng In Range(.[D2], .[D2].End(xlDown))
  6.             rng.Offset(, 26) = IIf(IsNumeric(rng), rng, 0)
  7.             rng.Offset(, 1) = IIf(IsNumeric(rng.Offset(, -1)), rng.Offset(, -1), 0)
  8.         Next
  9.     End With
  10. End Sub
複製代碼
Sheet1:
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2.     If Left(Target.Address, 2) = "$D" And IsNumeric(Target) Then
  3.         If Target.Offset(, 26).Value <> Target.Value Then
  4.             Target.Offset(, 26) = Target
  5.             Target.Offset(, 2) = Target.Offset(, 1)
  6.             Target.Offset(, 1) = IIf(IsNumeric(Target.Offset(, -1)), Target.Offset(, -1), 0)
  7.         End If
  8.     End If
  9. End Sub
複製代碼
資料暫存.rar (61.05 KB)

TOP

回復 5# 藍天麗池

TOP

這跟我預期的一樣,因為 DDE  的匯入資料之變動
確定是不會觸發 Worksheet_Change() 的。

TOP

回復 8# 藍天麗池
用這個程式再試試看行不行
資料暫存.rar (61.16 KB)

TOP

回復 11# 藍天麗池
請將 ThisWorkbook 內的
.[Z1] = .[D2]
改成
.[Z1].Formula = "=D2"
如此才能觸發。

TOP

回復 11# 藍天麗池
我已經將 .[Z1].Formula = "=D2" 修正了。
資料暫存2.rar (73.3 KB)

TOP

回復 14# 藍天麗池
Z1 為 Z 欄的第一行,主要用意是當 D2 DDE 匯入資料
有異動時 Z1 欄位公式 (=D2) 的內容值亦會跟著變動,
如此 Z1 數值 的變動便會觸發 Worksheet_Change()。
等確定後再來修正 AD 欄的存入值為數值、抑或是公式。

TOP

回復 16# 藍天麗池
試試這隻程式!
資料暫存A.rar (69.81 KB)

TOP

回復 18# 藍天麗池
如此,便不能藉由 Worksheet_Change)
來處理了。
DDE 的處裡以往我是以程式來直接作業,即從開盤起,
每隔多少時間回顧一下,直到收盤為止。
但是它會占用一些CPU資源。讓我思考一下。

TOP

        靜思自在 : 屋寬不如心寬。
返回列表 上一主題