Excel VBA:如何求和仅大于特定值的值?

4
我在工作中一整天都在尝试解决我的问题。大部分的谷歌搜索都引导我来到了这个网站,所以我决定放弃并寻求帮助。
我有一个包含股票投资组合位置的Excel文件。我需要找出如何编写宏,以便可以立即告诉我,那些超过组合价值5%的头寸是否总共超过了组合价值的40%。
我对VBA有一些基本的理解,并且知道如何选择正确的列,但我无法想出如何仅计算那些超过5%(0.05)的头寸总和。我尝试了不同的If表达式,但似乎始终无法得到正确结果。
能否有人向我展示一条路呢? 我只需要宏检查我的列,然后在MsgBox中打印头寸(> = 0.05)是否超过40%(0.40)即可。
非常感谢!
示例列:
Weights
0.032
0.067
0.103
.
.
.
0.02

2
你不需要使用VBA。你可以使用SUMIF函数,我认为这样就可以了。 - Doug Glancy
是的,我知道我可以不用VBA来完成它,但在这种情况下我需要VBA。该脚本只是一个更大宏的一部分。 - mikaeln
2个回答

7

建立在Doug Glancy的评论的基础上,您应该能够使用SUMIF来完成这个任务。假设您的投资组合权重在A2:A200范围内,以下公式可以帮助您实现所需功能:

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


正如我在Doug的评论下所写的那样。这只是用于分析报告的更大宏的一部分。我需要它作为VBA :( - mikaeln
3
@mikaeln,你可以在VBA中轻松使用这个解决方案;MsgBox Application.WorksheetFunction.SumIf(Range("A2:A200"), ">=0.05") - Alex K.

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

希望这能有所帮助。

这段代码看起来像我昨天试图构建(但失败了)的那个。明天回到办公室时,我会尝试它。谢谢! - mikaeln
有没有抛出任何系统错误,还是只是输出不正确? - android_newbie

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接