Excel VBA - 如果值存在> x,加上总和

时间:2017-04-19 20:00:35

标签: excel vba excel-vba

我有一张包含时间值的表格。如果指定行中存在大于90分钟(1:30:00)的任何值,我需要在行尾添加差值(即它的大小)。因此,该框可以是空白的,可以只有一个单元格的值,或者可以添加多个值。我已经有For循环连续遍历每个单元格。我需要该部分来总结这些值。理想情况下,如果有一个嵌套循环为6行做6个单独的总和......

'Add break munutes
fp.Activate
Dim rng As Range
For Each rng In Range("B3:F3")
    If rng.Value > TimeValue("1:31:00") Then

    End If
Next rng

enter image description here

4 个答案:

答案 0 :(得分:2)

如果您想避免VBA,实际上可以通过Excel公式来完成:

=SUMIF($B$3:$B$9,">"&1.5/24)-COUNTIF($B$3:$B$9,">"&1.5/24)*1.5/24

总结超过90分钟的所有值,然后从已计算的每个值的总数中减去90分钟。

enter image description here

答案 1 :(得分:2)

如果这是一个选项,我建议使用Excel公式,因为VBA解决方案有限制。

=SUMIF(B$3:B9-1/16,">0")
使用数组公式

或更短一点(使用Ctrl + Shift + Enter输入):

 public class Location
{

private String localDesc;
private Item localItem;
HashMap<String, Location> nbors = new HashMap<String, Location>();

public Location(String pDesc)
{
    // initialise instance variables
    localDesc = pDesc;
    localItem = null;
}


public Location(String pDesc, Item pItem)
{
    // put your code here
    localDesc = pDesc;
    localItem = pItem;
}


public Item getItem(){
    return localItem; 
}


public String getDescription(){
    return localDesc;
}


 public void addItem(Item i){
    // Need help here
   }
}  

答案 2 :(得分:1)

很难说如果没有更多信息这是完全准确的,但这样的事情应该适合你:

unset()

答案 3 :(得分:1)

你说你想要连续的时间总和,然后定义B3:B9,所以我假设你的意思是列中的时间总和。 试试这个:

Dim i As Integer
Dim num1 As Date
For i = 3 To 9
    If Cells(i, 2).Value > TimeValue("1:30:00") Then
        num1 = Cells(10, 2).Value + Cells(i, 2).Value - TimeValue("1:30:00")
        Cells(10, 2).Value = num1
    End If
Next i

我已经定义了总和作为单元格B10的位置。您可以为每列创建类似的循环。我尝试了这个,它对我有用。