2017-11-30 8 views
0

私は2つのループをコーディングしています。最初のループは列を14回合計し、すべてが計算されるまでワークブックの各ワークシートを通過します。 2番目のループはより複雑です。手動で入力する場合は、=(OFFSET(N39、-1、0、1、1))/(OFFSET($ N $ 39、-1、-1,1,1))にする必要があります。この数式は13回ループする必要があります。計算されるたびに、合計バケットの割合が示されるはずです。例として、売掛金の93%が最新のものであることを示すことができます.2%は1〜10日遅れ、次に1.5% 30日遅れています。私は、各列のパーセンテージを計算しているループをどのようにコードするかを理解できません。以下は私のコードです相対参照を使用し、式で固定セルを必要とするExcel VBAループ

Sub Totals() 
     Dim LastCell As Range 
     For Each e In Worksheets 
      e.Activate 
      Range("M1").Select 
       For i = 1 To 14 
        Set LastCell = Cells(Columns.Count, ActiveCell.Column).End(xlUp) 
        LastCell.Offset(1).Value = WorksheetFunction.Sum(Range(LastCell.End(xlUp), LastCell)) 
        ActiveCell.Offset(0, 1).Select 
       Next i 
      ActiveCell.Offset(1, 0).Select 
     Next e 

      For Each d In Worksheets 
      d.Activate 
      Range("N1").Select 
       For g = 1 To 13 
        Set LastCell = Cells(Columns.Count, ActiveCell.Column).End(xlUp) 
        LastCell.Offset(1).Value = "=(Offset(N39, -1, 0, 1, 1))/(Offset($N$39, -1, -1, 1, 1))" 
        ActiveCell.Offset(0, 1).Select 
       Next g 
      Next d 
    End Sub 

最初のループはうまくいきます。しかし、2番目のループはありません。

最終結果:

End Result

+0

なぜだろう'$ M $ 38'ではなく' OFFSET($ N $ 39、-1、-1、1、1) 'を使用しますか? – Rory

+0

各ワークシートが動的なレコード数を使用しているため、$ M $ 38は機能しないため、オフセットを使用しました。私は動的でなければならない数式の部分をどのようにコード化するのか分かりません。私は式を提供したので、読んでいる誰もが私がしようとしていることを理解できるようになりました。それは意味がありますか? – Gizzzmo68

+0

しかし、あなたは固定参照からハードコードされたオフセットを持っているので、まったく別の固定参照と同じです。あなたの問題は、 'Cells'の** row **引数として' Columns.Count'を使うことに関連していると思います。 – Rory

答えて

0

次へのループを変更するようにしてください:

x = 1 
For g = 14 To 26 
lastrow = ActiveSheet.Cells(Rows.Count, "N").End(xlUp).Row + 1 
ActiveSheet.Cells(lastrow, g).Value = "=R[-1]C/R[-1]C[-" & x & "]" 
x = x + 1 
Next g 

私は今、これをテストしてきたし、それに応じて動作します...

+0

コードをあなたのものと置き換えると、これは私が見るものです: #NAME? #NAME? #NAME? #NAME? – Gizzzmo68

+0

これはまだ動作しません - VBAのように式で 'Cells'を使うことはできません。 – Rory

+0

私を非常に手伝ってくれてありがとう。私は同じ結果を受けていますが、私はこの時間が変わる数式を見ることができます。私はこのことが必要です。最初の列はN#/ $ M $#でなければなりません。 2番目の列はO#/ $ M $#でなければなりません。 3番目の列はP#/ $ M $#、Q#/ $ M $#、R#/ $ M $#、S#/ $ M $#、T#/ $ M $#、 13行...行ではなく、13回実行されるまで、U#/ $ M $#、V#/ $ M $#、W#/ $ M $#常に列Nから始まり列Zに移動しますが、行番号は動的になり、分母は固定されます。これは役に立ちますか? – Gizzzmo68

関連する問題