0

ループの結果を配列に集めたいと思います。理想的には、最初のループの結果を保持し、それを 2 番目のループの結果と比較します。2 番目のループの結果の方が優れている場合は、2 番目のループを保持し、3 番目と比較します。これを行う方法についてのアイデアはありますか?ここに私がこれまでに持っているものの抜粋があります:

For Each ccell In pcrange
If ccell.Cells.Value = 0 Then
    For Each agecell In agerange
    If agecell.Cells.Value < 0.5 And agecell.Offset(0, 5).Value > 1 Then
    tmpyr = agecell.Offset(0, 1)
    srchyr = ccell.Offset(0, -6)
    tmpval = agecell.Offset(0, 2)
    tmpdiff = Abs(tmpyr - srchyr)
    arrindx = arrindx + 1

    End If

    tmparray = Array(tmpdiff, tmpval) 'need redim to hold more than 2 values? why are subsequent elements empty?
    ReDim Preserve tmparray(2 * arrindx - 1)
   'minarr = IIf(tmparray(2) > tmparray(0), tmparray(1), tmparray(3)); want to extract corresponding tmpval from array onto sheet if tmpdiff is the min of the entire loop; change to store better result each time
    Next 
End If
Next
4

1 に答える 1

0

あなたの定義は次のtmparrayようになります:

tmparray(UBound(tmparray, 1)) = Array(tmpdiff, tmpval) 'add values to last place
ReDim Preserve tmparray(UBound(tmparry, 1) + 1) 'add another place to the array

の後に配置されている場合、新しい分を見つける必要がありますReDim

If UBound(tmparray, 1) <= 2 then 
    minarr = tmpval
ElseIf tmparray(UBound(tmparray, 1) - 1, 0) < tmparray(UBound(tmparray, 1) - 2, 0) then 
    minarr = tmparray(UBound(tmparray, 1) - 1, 1)
end if
于 2013-04-07T12:00:53.463 に答える