列を数式で埋めるマクロをExcelで記録しました。ただし、これはテストデータで使用していた範囲に制限されています。つまり、別の(より長い)データセットを使用すると、データの最後の行まで入力されません。
ActiveCell.FormulaR1C1 = "Term"
Range("H2").Select
ActiveCell.FormulaR1C1 = "=ROUND((RC[-1]-RC[-2])/30,0)"
Range("H2").Select
Selection.AutoFill Destination:=Range("H2:H11")
Range("H2:H11").Select
上記の場合、範囲はH2:H11
に制限されていますが、データセットに入力されたデータの最後の行まで自動入力する必要があります。これは、列Aが入力されているかどうかを確認することで実行できますが、機能するコードが見つかりません。簡単なことは何もありません。
データは複数の列を持つ10,000行であり、マクロのこの特定の部分は数式を空白の列に入力していますが、10,000行のみを入力したいと思います。列Aにはデータが含まれているので、これを使用して数式を自動入力する範囲を定義するにはどうすればよいですか?
ここで他の回答がExcelでデータをテーブルに変換することについて言及しているのを見てきましたが、10,000行以上のデータセットを扱っているため、これを行うのは気が進まないため、多くの追加の書式設定などが追加されます。 。
現在のワークシートの最後の行番号を返すActiveSheet.UsedRange.Rows.Count
を試すことができます。行Aはチェックしませんが、最後の行までデータを入力するのに適した方法です。
例えば
lastRow = ActiveSheet.UsedRange.Rows.Count
' ... something else ...
Selection.AutoFill Destination:=Range("H2:H" & lastRow)
作業するワークシートを指定する場合は、Activesheet
をWorksheet
オブジェクトに置き換えることができます。