Excel VBA:如何仅将大于特定值的值相加?

时间:2013-03-13 22:32:28

标签: vba excel-vba sum excel

我花了一整天的时间努力找出问题的解决方案。我的大部分谷歌都把我带到了这个网站,所以我决定放弃并寻求帮助。

我有一个包含股票投资组合头寸的Excel文件。我需要弄清楚如何编写一个宏,可以立即告诉我那些超过投资组合价值5%的头寸是否超过投资组合价值的40%。

我对VBA有一些基本的了解,我知道如何选择正确的列,但我无法弄清楚如何只对那些超过5%(0.05)的位置求和。我尝试了不同的If表达式,但我似乎无法做到正确。

有人可以请问我的方式吗?我只需要宏来检查我的列,然后在MsgBox中打印位置(> = 0.05)是否超过40%(0.40)。

非常感谢!

示例列:

Weights
0.032
0.067
0.103
.
.
.
0.02

2 个答案:

答案 0 :(得分:7)

为了建立Doug Glancy的评论,你应该可以使用SUMIF来实现这个目的。假设您的投资组合权重在A2:A200范围内,这将为您提供所需:

=SUMIF(A2:A200,">=0.05")

答案 1 :(得分:0)

如果我理解你的问题,我认为以下是你想要的。

Sub GetThreshold()

Dim myRng As Range
Dim pos As Double

Set myRng = ThisWorkbook.Sheets("Sheet1").Range("A2:A100")

For Each mycell In myRng
    If mycell.Value >= 0.05 Then
        pos = pos + mycell.Value
    End If
Next

If pos > 0.4 Then
    MsgBox "Position exceeds the threshold of 40%", vbCritical, "Position Break"
Else
    MsgBox "Position within the threshold of 40%", vbInformation, "Position Break"
End If

End Sub

希望这有帮助。