以下に私のコードのスニペットを掲載しました。私の実際のワークブックにはもっと多くの数式がありますが、それらはすべて以下の数式のように構成されています。私が扱っているデータの量は1ヶ月ごとに変わる可能性があるので、数式が必要な行の数は決して分かりません。私のちょっとした不満は、すべての式の宛先範囲を"XX2:XX500"にすることでした。これは決して500行を超えないためです。式のVBAダイナミックレンジ
'November Remaining Spending Plan
Range("BF2").Select
ActiveCell.FormulaR1C1 = "=IF(RC[-1]="""","""",RC[-43]+RC[-40]+RC[-37]+RC[-34]+RC[-31]+RC[-28]+RC[-25]+RC[-22])"
Selection.AutoFill Destination:=Range("BF2:BF500")
'December Remaining Spending Plan
Range("BG2").Select
ActiveCell.FormulaR1C1 = "=IF(RC[-1]="""","""",RC[-41]+RC[-38]+RC[-35]+RC[-32]+RC[-29]+RC[-26]+RC[-23])"
Selection.AutoFill Destination:=Range("BG2:BG500")
Iダイナミックレンジが非常に式Iの
"IF(RC[-1]="""","""","
一部を除去し、ブック内の余分な式を有するピボットテーブルと、他のユーザのために理想的ではないことができるしたいと思い。
私はLastRow、FillDown、CurrentRegionの組み合わせを使用して範囲を試してみましたが、私は運がありませんでした。
各フォーミュラは他のすべてのフォーミュラと同じ量の行を持ち、数式の数は常に列Aの行数から1を引いた数になります(マイナス1はヘッダー用です)。
これをクリーンアップする方法はありますか?
ありがとうございます!
これは素晴らしいです - ありがとう!あなたのためのもう1つの質問は、どのように私はそれを使用することができますように私は "Dim lastRow As Long Dim ws WorksheetSet ws = ActiveSheetワークシート(" Sheet1 ") lastRow = ws.Cells(ws.Rows.Count、" A " ).End(xlUp).Row "他のモジュール間で?これを公開する方法はありますか?他のモジュールで使用できない場合は、すべての式を1つのモジュールに移動できます。現在、範囲X2:XX500の数式は複数のモジュールにあります。 – Brian
ただパブリック変数を作る。モジュールの一番上に 'public lastrow as Long'を置いてください。そして、サブの' Dim lastrow as Long'を削除してください。次に、Excelを開いている間に一度だけ設定し、任意のコードで「終了」を使用しないでください。それは値を維持し、他のモジュールが呼び出して使用することができます。 –
これは私が今持っているもので、他のモジュールでは取り上げられていません。 ' 'ロング ように、モジュール1 パブリックLASTROWの上に' 変数はワークシート セットWS =ワークシート( "試験") LASTROW = WSよう サブVariableTest() ' 薄暗いWSを定義されたモジュール1において。セル(ws.Rows.Count、 "A")。End(xlUp).Row 次に、2番目のモジュールで計算します。 ' 'モジュール2 サブテスト(の計算) ' 新11月レムエスト ws.Range( "D2:D" &LASTROW).FormulaR1C1 = "= RC [-2] -RC [1]" エンドSub' – Brian