返回列表 上一主題 發帖

[發問] (已解決)股市買賣點可以用字典做嗎

回復 1# freeffly

S欄市收盤價>10均且>20均得出的結果
但是以公式判斷出來好像不太相同
圖中藍框部分S欄與V欄有所出入
V欄紅色代表符合條件"市收盤價>10均且>20均"
請說明判斷邏輯應何者正確?
學海無涯_不恥下問

TOP

回復 9# freeffly
  1. Sub ex()
  2. Set d = CreateObject("Scripting.Dictionary")
  3. Dim f$
  4. With Sheet1
  5. ar = .UsedRange.Offset(1).Value
  6. For i = 2 To UBound(ar, 1) - 1
  7.    If ar(i, 5) > ar(i, 8) And ar(i, 8) > ar(i, 9) And ar(i, 8) > 0 And ar(i, 9) > 0 Then
  8.       If ar(i - 1, 9) = 0 Or ar(i - 1, 8) = 0 Or _
  9.       Not (ar(i - 1, 5) > ar(i - 1, 8) And ar(i - 1, 8) > ar(i - 1, 9)) Or _
  10.       Not (ar(i + 1, 5) > ar(i + 1, 8) And ar(i + 1, 8) > ar(i + 1, 9)) Then
  11.       f = IIf(d.Count > 0 And d.Count Mod 2 > 0, "=RC[-1]-R[-1]C[-1]", "")
  12.       d(ar(i, 1)) = Array(ar(i, 1), ar(i, 5), f)
  13.       End If
  14.    End If
  15. Next
  16.      .[W2].Resize(d.Count, 3) = Application.Transpose(Application.Transpose(d.items))
  17. End With
  18. End Sub
複製代碼
學海無涯_不恥下問

TOP

回復 11# freeffly


    字典顧名思義,每個索引值(key)會對應一個內容(item)
就如同國語字典,若以部首查詢,同部首的字會很多
部首就是索引值,而這些不同的字就是內容
如果索引值對應的內容是單一項目,那就比較容易理解
dictionary(key)=item
當對應內容不只一個的時候,你就要看你的內容要的是甚麼?
在此範例中,key是日期
當條件成立的時候要把這日期的收盤價紀錄下來
當然這是單一內容,不過,當你要寫入工作表時
是要有3欄的資料:1.日期,2.收盤價,3.價差
這個價差是2個日期的差額,若要在字典內取得前一個的價格,會增加許多困難
所以,將第3欄用公式帶入,在該有公式的時候讓陣列的第3個元素寫入公式
這樣跑完全部資料後,字典就會有若干個key
字典的count屬性就是key的數量
keys則表示所有的索引值,所形成的陣列
items則表示所有的內容
因為此範例中每個item都是一個一維陣列
所以items就等於是二維陣列
這邊要注意一點,如果二維陣列,原本只要直接寫入儲存格即可
在這邊items這個二維陣列,實際上他是一維陣列,只不過這個一維陣列的每個元素都包含著一個一維陣列
所以必須使用兩次的轉置(Transpose)動作,才會變成真正的二維陣列,才可直接寫入工作表
學海無涯_不恥下問

TOP

        靜思自在 : 有願放在心裡,沒有身體力行,正如耕田不播種,皆是空過因緣。
返回列表 上一主題