私は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番目のループはありません。
最終結果:
なぜだろう'$ M $ 38'ではなく' OFFSET($ N $ 39、-1、-1、1、1) 'を使用しますか? – Rory
各ワークシートが動的なレコード数を使用しているため、$ M $ 38は機能しないため、オフセットを使用しました。私は動的でなければならない数式の部分をどのようにコード化するのか分かりません。私は式を提供したので、読んでいる誰もが私がしようとしていることを理解できるようになりました。それは意味がありますか? – Gizzzmo68
しかし、あなたは固定参照からハードコードされたオフセットを持っているので、まったく別の固定参照と同じです。あなたの問題は、 'Cells'の** row **引数として' Columns.Count'を使うことに関連していると思います。 – Rory