VBA:带for for循环的sum变量

问题描述 投票:0回答:1

我试图在行中对包含特定文本字符串的单元格求和。下面是我提出的,但是,当它到达第一个货币文本时,我在第二个循环上一直收到错误。

运行时错误'6':溢出

    'Add Futures Data
        Morgan_Stanley_File.Activate
        Dim Currency_JPY As Integer: Currency_JPY = 0
        Dim Currency_USD As Integer: Currency_USD = 0
        Dim Currency_EUR As Integer: Currency_EUR = 0
        Dim Currency_GBP As Integer: Currency_GBP = 0
        Dim Currency_AUD As Integer: Currency_AUD = 0

        For Each MCell In Range("H1:H" & bottomL)
            If MCell.Value = "N" And MCell.Offset(0, -3) = "JPY" Then
                Currency_JPY = Currency_JPY + MCell.Offset(0, 19).Value
            ElseIf MCell.Value = "N" And MCell.Offset(0, -3) = "USD" Then
                Currency_USD = Currency_USD + MCell.Offset(0, 19).Value
            ElseIf MCell.Value = "N" And MCell.Offset(0, -3) = "EUR" Then
                Currency_EUR = Currency_EUR + MCell.Offset(0, 19).Value
            ElseIf MCell.Value = "N" And MCell.Offset(0, -3) = "GBP" Then
                Currency_GBP = Currency_GBP + MCell.Offset(0, 19).Value
            ElseIf MCell.Value = "N" And MCell.Offset(0, -3) = "AUD" Then
                Currency_AUD = Currency_AUD + MCell.Offset(0, 19).Value
            End If
        Next MCell

        wb.Activate
        Initial_Margin.Select
        Range("A" & LastDate).Offset(1, 5).Value = Currency_JPY
        Range("A" & LastDate).Offset(1, 6).Value = Currency_USD
        Range("A" & LastDate).Offset(1, 7).Value = Currency_EUR
        Range("A" & LastDate).Offset(1, 8).Value = Currency_GBP
        Range("A" & LastDate).Offset(1, 9).Value = Currency_AUD

有什么想法吗?

excel vba loops sumifs
1个回答
0
投票

考虑Excel的公式函数SUMIFS(),它允许多个标准,类似于AVERAGEIFS()。而对于其他聚合体,如中位数,最大值,最小值,细胞内有array formula。不需要VBA for循环或if逻辑。

A       B       C
N     150     USD
N     250     JPY
N     175     EUR
Y     185     JPY
N     225     USD
N     225     AUD
N     225     GPD
...

[JPY TOTAL CELL] = SUMIFS($B$1:$B$100, $C$1:$C$100, "JPY", $A$1:$A$100, "N")
[USD TOTAL CELL] = SUMIFS($B$1:$B$100, $C$1:$C$100, "USD", $A$1:$A$100, "N")
[EUR TOTAL CELL] = SUMIFS($B$1:$B$100, $C$1:$C$100, "EUR", $A$1:$A$100, "N")
[GBP TOTAL CELL] = SUMIFS($B$1:$B$100, $C$1:$C$100, "GBP", $A$1:$A$100, "N")
[AUD TOTAL CELL] = SUMIFS($B$1:$B$100, $C$1:$C$100, "AUD", $A$1:$A$100, "N")
© www.soinside.com 2019 - 2024. All rights reserved.