4

我一整天都在工作,试图找出解决问题的方法。我的大部分谷歌搜索都把我带到了这个网站,所以我决定放弃并寻求一些帮助。

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

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

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

非常感谢你!

示例列:

Weights
0.032
0.067
0.103
.
.
.
0.02
4

2 回答 2

7

为了建立 Doug Glancy 的评论,您应该能够为此使用 SUMIF。假设您的投资组合权重在 A2:A200 范围内,这将为您提供所需的:

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

于 2013-03-13T22:56:40.847 回答
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

希望这可以帮助。

于 2013-03-14T10:52:08.733 回答