2016-04-20 9 views
0

VBAの式を使用してデータの列と比較し、一致が見つかった場合は、あるシートから別のシートにデータを入力します。私は最初の行で数式を使用しましたが、これはうまくいく結果が得られます。これはレポート上の他の自動化の一部になるので、私はそれを自動化したいと思います。私は、列の見出しを入力して、全体の列にsumif関数を適用するいくつかのコードがありますが、私はすべての方法で同じ結果を得る、それは最初の行の結果です。vbaの式を使用してセルを比較し、結果を別のセルに入力する

コード

Sub ImportCosting() 

    Dim z As Workbook 
    Dim x As Workbook 

    Set x = Workbooks.Open("C:\Documents\Reports\MEP.xlsx") 

    With Workbooks("MEP") 
     Worksheets("DynamicReport").Range("P5").Value = "Budget" 
     Worksheets("DynamicReport").Range("Q5").Value = "Forecast" 
    End With 

    Set z = Workbooks.Open("C:\Documents\Reports\Budget.xlsx") 

    With x.Worksheets("DynamicReport") 
     lastRow = .Cells(Rows.Count, 5).End(xlUp).Row 
     For Each rng In .Range("P6:P" & lastRow) 
      rng.Formula = "=SUMIF('[Budget.xlsx]DynamicReport'!$C:$C,$B6,'[Budget.xlsx]DynamicReport'!H:H)" 
      rng.Value = rng.Value 
     Next rng 
     End With 
End sub 

希望私は問題を正しく説明しています。私が間違っていた場所と、それを得る方法を教えてもらえますか?sumif関数が各行に適用され、最初の行の結果は繰り返されません。

おかげ

答えて

1

私はわかりませんが、私はあなたがrng.row

にB6を変更したい私はあなたのようにB6を入れているので、あなたはRNGのすべてのセルに同じ結果を得ていると思うと思いますsumの基準によって、B列の対応する行番号に変更されるので、目的の結果が得られます。

変更この:

rng.Formula = "=SUMIF('[Budget.xlsx]DynamicReport'!$C:$C,$B6,'[Budget.xlsx]DynamicReport'!H:H)" 

この

rng.Formula = "=SUMIF('[Budget.xlsx]DynamicReport'!$C:$C,$B" & rng.Row & ",'[Budget.xlsx]DynamicReport'!H:H)" 
+0

下にしてみてくださいその行のsumif関数 – user3088476

+0

で定義された、またはオブジェクト定義されたエラーを、6をrng.Rowに置き換えましたか? – newguy

+0

いいえ、私はそれを加えなかったし、それは治療を働く。助けてくれてありがとう。 – user3088476

0

へのplsは私が 'B6' から '6' を取り出したときに、私はランタイムエラーアプリケーションを取得

Sub ImportCosting() 
    Dim z As Workbook 
    Dim x As Workbook 
    Set x = Workbooks.Open("C:\Documents\Reports\MEP.xlsx") 
    With Workbooks("Bank.xlsx") 
     Worksheets("DynamicReport").Range("P5").Value = "Budget" 
     Worksheets("DynamicReport").Range("Q5").Value = "Forecast" 
    End With 
    Set z = Workbooks.Open("C:\Documents\Reports\Budget.xlsx") 
    With x.Worksheets("DynamicReport") 
     lastRow = .Cells(Rows.Count, 5).End(xlUp).Row '"E" 
     For Each Rng In .Range("P6:P" & lastRow) 
      Rng.Formula = "=SUMIF([Budget.xlsx]DynamicReport!$C:$C,[Budget.xlsx]DynamicReport!$B$" & Rng.Row & ",[Budget.xlsx]DynamicReport!H:H)" 
      'Rng.Value = Application.WorksheetFunction.SumIf(z.Worksheets("DynamicReport").Range("C:C"), z.Worksheets("DynamicReport").Range("B" & Rng.row), z.Worksheets("DynamicReport").Range("H:H")) 
      Rng.Value = Rng.Value 
     Next Rng 
     End With 
End Sub 
関連する問題