双循环绝对值

时间:2017-10-25 07:59:26

标签: excel vba excel-vba

我正在尝试设置一个代码,当单元格的值高于同一列中的前5个单元格中的每个单元格时,该代码会显示一条消息。

这是我的代码:

Sub IncreasingFor_5Steps()

Dim i, j As Integer

For i = 7 To 20
    For j = 1 To 5
        If Cells(i, 5).Value > Cells(i - j, 5).Value Then    
            Cells(i, 6) = "Increased for 5 steps"    
        End If        
    Next j
Next i

End Sub

当我运行此代码时,当单元格高于至少一个单元格(超过前5个单元格)时,会显示消息“增加5步”,但我想要的是仅在单元格高于前5个单元格时才显示该消息,但我不知道该怎么做。

例如在F7中显示消息,而E7低于E4,E20低于E19,但显示消息,因为E20高于E15,E16,E17,E18,但我不知道我想要:

enter image description here

4 个答案:

答案 0 :(得分:1)

enter image description here您只需使用以下公式即可:

<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script> <div id="root"> <!-- This element's contents will be replaced with your component. --> </div>

答案 1 :(得分:1)

尝试这样,你需要一个布尔标志来绕过它:

$orders = Bigcommerce::getOrders();
$orders_array = json_decode($orders, true);

echo $orders[0]['shipping_address']['first_name'];

布尔标志的想法是它检查所有5个单元格是否较小,如果其中一个不小,则它变为Sub IncreasingFor_5Steps() Dim i As Integer, j As Integer Dim flag As Boolean For i = 7 To 20 flag = False For j = 1 To 5 If Cells(i, 5).Value <= Cells(i - j, 5).Value Then flag = True End If Next j If Not flag Then Cells(i, 6) = "Increased for 5 steps" Next i End Sub 一旦它为真,true不会增量。

答案 2 :(得分:1)

在VBA中这样做是否必要?将此公式放在F7中并向下拖动工作吗?

user.TrainingPlan[req.params.object].time.forEach(function(item, index, array)
{

console.log(user.TrainingPlan[req.params.object].time.toString() + ' xxx');

});

答案 3 :(得分:0)

如果您想使用 VBA ,可以使用WorksheetFunction.Max获取特定范围内的最大值,从而无需拥有2个For循环

Option Explicit

Sub IncreasingFor_5Steps()

Dim i As Long

For i = 7 To 20
    ' use WorkshettFunction Max instead of a 2nd loop
    If Cells(i, 5).Value > WorksheetFunction.Max(Range(Cells(i - 5, 5), Cells(i - 1, 5))) Then
        Cells(i, 6) = "Increased for 5 steps"
    End If
Next i

End Sub