【问题标题】:Excel VBA: How to sum only values larger than a specific value?Excel VBA:如何仅对大于特定值的值求和?
【发布时间】:2013-03-02 02:59:33
【问题描述】:

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

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

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

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

非常感谢!

示例列:

Weights
0.032
0.067
0.103
.
.
.
0.02

【问题讨论】:

  • 您不需要 VBA。我想你可以使用 SUMIF 函数。
  • 是的,我知道我可以不使用 VBA,但在这种情况下我需要 VBA。该脚本只是更大宏的一部分。

标签: vba excel sum


【解决方案1】:

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

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

【讨论】:

  • 正如我在 Doug 的评论下所写的那样。这只是用于分析报告的更大宏的一部分。我需要它作为 VBA :(
  • @mikaeln 你可以很容易地在 VBA 中使用这个解决方案; msgbox Application.WorksheetFunction.SumIf(Range("A2:A200"), ">=0.05")
【解决方案2】:

如果我正确理解了您的问题,我认为以下就是您想要的。

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

希望这会有所帮助。

【讨论】:

  • 这段代码看起来像我昨天尝试构建的代码(不成功)。明天我回到办公室时会试试看。谢谢!
  • 是否有任何系统错误被抛出,或者只是输出不正确?
猜你喜欢
  • 1970-01-01
  • 2017-02-12
  • 2021-05-22
  • 1970-01-01
  • 2014-06-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多