我想比较Multid数组中的值和单个Column中的值。
损:
4554 76年
OHLC:
37 43 30 40
32 43 41 43
32 54 76 87
我想比较stopploss和OHLC中的每个值,并找到OHLC中第一个大于stopploss的值,在这种情况下,OHLC中第一个大于45的数字将是54。这发生在止损中的每个后续数字,将OHLC数组调整为我想要比较的止损值的行号。这意味着,当我比较54和OHLC时,我的OHLC范围将变成B2:B3,而不是停留在B1:B3。
止损范围内有空格。到目前为止,我有这个:
For i = 63 To 166
Set OHLC = Range("B" & i & ":" & "E" & i)
For Each cll In OHLC
If Range("x" & i).Value > 0 Then
stoploss = Range("x" & i)
End If
If cll.Value > stoploss Then
Range("s" & cll.Row) = cll.Value
End If
Next cll
Next i
我的代码中没有错误消息,但是列"S"中没有返回值。我还知道这个双循环方法不起作用,因为它返回每一行范围B:E中的第一个值,这不是我想要的。有什么需要帮助的吗?任何输入将非常感激。谢谢你
*PS我知道这方面的话题以前已经涵盖过了,但仅限于VB领域。似乎找不到正确的解决办法。我是VBA新手
因为您的范围OHLC
只包含一行,所以现在您搜索每一行大于该行止损的值。首先搜索37 43 30 40,寻找大于45的值,以此类推。这没有任何命中(至少在您的示例中)。
如果你想在所有行中搜索每个止损值,你需要将你的范围设置为所有这些行,然后循环它们
'Set OHLC = Range("B1:E10000") 'If you want to search the whole range
For i = 63 To 166
'Set OHLC = Range("B" & i & "E10000") 'if you want to search from row i onwards
If Range("X" & i).Value > 0 Then
stoploss = Range("x" & i)
Set OHLC = Range("B" & i & "E10000") 'based on your comment "first row of OHLC to match the row of the value in Stoploss" (only update OHLC if stoploss is updated)
End If
For Each cll In OHLC 'will loop row by row
If cll.Value > stoploss Then
Range("s" & cll.Row) = cll.Value
Exit For 'don't loop through all 40000 cells!
End If
Next cll
Next i