2016-12-16 3 views
0
Dim i As Integer, j As Integer, k As Integer, l As Integer 

i = ActiveSheet.PivotTables(1).TableRange2.Rows.Count + 1 
j = ActiveSheet.PivotTables(1).TableRange2.Columns.Count 
k = ActiveSheet.PivotTables(1).TableRange2.Rows.Count - 7 

For l = 2 To j 
    Cells(i + 2, l).Value = WorksheetFunction.SumIf(Range(Cells(9, l), Cells(i, l)), ">0", Range(Cells(9, l), Cells(i, l))) 
Next l 

こんにちは、私はVBAでsumif関数を使用しようとしています。要点は、列の数に依存するループでこれを行うことです。私は実際にここで何が間違っているのか実際にはありませんが、おそらく私が取った基準を持つものがあると思います。私は0より大きい数値を持つすべてのセルを合計し、これをどのように書き込むかを確かめたくありません。VBAでのループのsumif基準

+0

が、あなたの 'SumIf'レンジ'範囲内(細胞(9,2)、細胞は、(i、2)) ''に進んでいませんForループは、常にB列です。Range(Cells(1,2)、Cells(i、2))を意味しましたか?何か似たようなもの? –

+0

これは、このようなOFC'S、申し訳ありません: '細胞(I + 2,1).Valueの= WorksheetFunction.SumIf(範囲(セル(9、L)、細胞(I、L))、 "> 0"、範囲(セル(9、L)、細胞(I、L))) ' – Cezary

+0

はまだちょうど – Cezary

答えて

-1

を比較するために、「*」を使用する必要はありません、内部でそれを追加する必要はありません第3引数としてSumIf

あなたは以下のコードで行くことができる:

For l = 2 To j 
    Cells(i + 2, l).Value = WorksheetFunction.SumIf(Range(Cells(9, l), Cells(i, l)), ">0") 
Next l 
+0

はまだ動作していないが、あなたの入力 – Cezary

+0

ためのおかげで、それは私のために、あなたは 'j'と' i'のためにどのような値を持っていないん@Cezary?私は、あなたが –

+0

[OK]をクリックして 'PivotTable'データテーブルから、あなたが考えて値を取得していないと思う機能するようになりました、おかげでたくさん – Cezary

0

次の機能を使用してください。あなたはSumIfあなたが基準と比較されている範囲(>0)を使用している中場合も合計する範囲として

Cells(i + 2, l).Value = Aplication.WorksheetFunction.SumIf(Range(Cells(9, 2), Cells(i, 2)), "> 0", Range(Cells(9, 2), Cells(i, 2))) 
+0

をしたい意図したとおりに動作するかどうか – Cezary

+0

「> 0」ではなく> 0」で使用してみてください" –

関連する問題