我想比较
中的值EntryP:
6
11
4
TwndHigh:
5
10
4
6
10
11
我想将EntryP中的每个值与TwndHigh中的值进行比较,并找到TwndHigh中大于EntryP的第一个值。例如,大于6的第一个值是10,,大于4的第一个值是6. 这意味着我希望我在TwndHigh中的行号匹配我想要的EntryP行相比。
Sub BUYexitGAIN()
Dim ohlc As Range
Dim cll, cell, twndhigh, twndlow As Range
Dim stoplossb, entrypriceb, stoplosss, entryprices As Double
Dim exitgains, exitlosss, exitgainb, exitlossb As Range
Dim n As Range
Dim i As Long
For i = 990 To 2000
'BUY
If Range("M" & i).Value = "buy" Then
entrypriceb = Range("w" & i)
Set twndlow = Range("K" & i & ":" & "K10000")
For Each cell In twndlow
If cell.Value > entrypriceb Then
Range("z" & cell.Row) = cell.Value
Range("t" & cell.Row) = -Range("t" & i)
Range("u" & cell.Row) = Range("t" & i) * cell.Value * 10000
Exit For
End If
Next cell
End If
Next i
End Sub
现在有点乱,但我正在使用双循环(For和For each cell)。这在我的返回列中给了我大约3个值(当我只想要符合我条件的第一个值时),其中2个通常是错误的值,其中1个是正确的。如何让我的代码成为一个循环,或者让它只返回我想要的第一个值?谢谢你们
* PS对不起,我知道我已经问了类似的问题,但我想重写我的整个问题,让你们更容易。
答案 0 :(得分:-1)
我已在下方提供代码以解决您在顶部说明的问题。如果您在A1:A3中有EntryP,在A5:A10中有TwndHigh,如示例中那样,它将输出EntryP数据旁边的结果。根据您处理相对较小整数的示例数据,请注意您需要将possibleResult初始化为大于预期输入数据的值,并且您可能需要更改数据类型以适应这一点。
Public Sub FindFirstHigher()
Dim possibleResult As Integer
Dim EntryP, TwndHigh As Range
Set EntryP = Worksheets("firstHigher").Range("A1:A3")
Set TwndHigh = Worksheets("firstHigher").Range("A5:A10")
For Each entrycell In EntryP
possibleResult = 9999
For Each checkcell In TwndHigh
If (checkcell.Value > entrycell.Value And checkcell.Value < possibleResult) Then
possibleResult = checkcell.Value
End If
Next checkcell
entrycell.Offset(0, 1).Value = possibleResult
Next entrycell
End Sub