2017-12-17 14 views
0

行の特定の文字列を保持するセルを合計しようとしています。以下は私が思いついたものですが、最初の通貨テキストに達したときに2番目のループでエラーが発生し続けます。VBA:forループで変数を合計

実行時エラー '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 

任意の考え?

+1

エラーは何ですか?あなたが合計としてintを宣言しているようなデータ型である可能性があり、値が大きすぎるとエラーを投げる可能性があります。おそらく長いか単一のものかを宣言します。 –

+0

どのようなエラーが表示されますか?これは強調表示されている行ですか? "Range(" A "&LastDate).Offset(1,5).Value = Currency_JPY"? – Carol

+0

実行時エラー '6'が表示されます。オーバーフローエラーです。データ型は、一般的な形式の単なる値なので大きすぎてはなりません。 以下の構文に問題がありますか(デバッグ時に強調表示されるエラー)?私は内部的に実行時エラーにつながるループを維持するかどうかは不思議です。 Currency_AUD = Currency_AUD + MCell.Offset(0、19).Valueの –

答えて

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") 
関連する問題